Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/master'
Browse files Browse the repository at this point in the history
Conflicts:
	README.md
	src/Adapters/XmlAdapter.php
	tests/Adapters/XmlAdapter.errors.phpt
	tests/Adapters/XmlAdapter.phpt
	tests/Adapters/XmlAdapter.services.phpt
  • Loading branch information
sallyx committed Jul 26, 2015
2 parents 3e83307 + f7efc42 commit f499618
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 14 deletions.
48 changes: 43 additions & 5 deletions README.md
Expand Up @@ -4,10 +4,12 @@

XML adapter could be used to write configuration in XML.
Thanks to namespace usage (http://www.sallyx.org/xmlns/nette/config/1.0) you can have
configuration common for nette and other application, configuration for nette only
and for other application only in the same file.
configuration common for your php application (nette) and other application
in the same xml file.

For basic usage example: see [tests/DI/files/xmlAdapter.xml](tests/DI/files/xmlAdapter.xml)
XmlAdapter reads xml file and convert it to PHP array.

See xml example here: [tests/Adapters/files/xmlAdapter.xml](tests/Adapters/files/xmlAdapter.xml)

## Supported types

Expand Down Expand Up @@ -89,11 +91,47 @@ You can use neon syntax for statement:
<xxx statement="DateTime(0)::format('%B')" />
```

## Example of converting neon config file to xml config file
#Usage

## Install with composer

```
composer require sallyx/nette-xml-adapter
```

## Test

```php
require 'vendor/autoload.php';
use Sallyx\Nette\DI\Config\Adapters\XmlAdapter;

$adapter = new XmlAdapter;
$file = 'vendor/sallyx/nette-xml-adapter/tests/Adapters/files/xmlAdapter.xml';
$config = $adapter->load($file);
print_r($config);
```

## Usage with Nette

Add this line into your app/bootstrap.php after ```$configurator = new Nette\Configurator;```

```
$xmlAdapter = new Sallyx\Nette\DI\Config\Adapters\XmlAdapter;
$configurator->addAdapter('xml', $xmlAdapter);
```

And now you can load XML configuration files (alongside with neon files).
For example:

```
$configurator->addConfig(__DIR__ . '/config/config.xml', Nette\Config\Configurator::AUTO);
```

### How to convert neon config file to xml config file

```php
use Nette\DI\Config\Adapters\NeonAdapter;
use Nette\DI\Config\Adapters\XmlAdapter;
use Sallyx\Nette\DI\Config\Adapters\XmlAdapter;

$na = NeonAdapter;
$xa = XmlAdapter;
Expand Down
4 changes: 2 additions & 2 deletions src/Adapters/XmlAdapter.php
Expand Up @@ -4,7 +4,7 @@
* Copyright (c) 2015 Petr Bilek (http://ww.sallyx.org)
*/

namespace Sallyx\Nette\Adapters;
namespace Sallyx\Nette\DI\Config\Adapters;

use Nette;
use Nette\DI\Config\Helpers;
Expand All @@ -27,7 +27,7 @@ class XmlAdapter extends Nette\Object implements Nette\DI\Config\IAdapter
public function load($file)
{
$options = LIBXML_NOBLANKS | LIBXML_NOCDATA | LIBXML_NOENT | LIBXML_NSCLEAN; // | LIBXML_PEDANTIC ?
$parserClass = "\\Sallyx\\Nette\\Adapters\\XMLElementParser";
$parserClass = "\\Sallyx\\Nette\\DI\\Config\\Adapters\\XMLElementParser";
$document = simplexml_load_file($file, $parserClass, $options, self::NS);
return $document->parse();
}
Expand Down
4 changes: 2 additions & 2 deletions tests/Adapters/XmlAdapter.errors.phpt
@@ -1,7 +1,7 @@
<?php

/**
* Test: Sallyx\Nette\Adapters\XmlAdapter errors.
* Test: Sallyx\Nette\DI\Config\Adapters\XmlAdapter errors.
*/

use Nette\DI\Config;
Expand All @@ -10,7 +10,7 @@ use Tester\Assert;
require __DIR__ . '/../bootstrap.php';

$config = new Config\Loader;
$config->addAdapter('xml', 'Sallyx\Nette\Adapters\XmlAdapter');
$config->addAdapter('xml', 'Sallyx\\Nette\\DI\\Config\\Adapters\\XmlAdapter');

Assert::exception(function () use ($config) {
$config->load('files/xmlAdapter.error1.xml');
Expand Down
4 changes: 2 additions & 2 deletions tests/Adapters/XmlAdapter.phpt
@@ -1,7 +1,7 @@
<?php

/**
* Test: Sallyx\Nette\Adapters\XmlAdapter
* Test: Sallyx\Nette\DI\Config\Adapters\XmlAdapter
*/

use Nette\DI\Config;
Expand All @@ -15,7 +15,7 @@ define('TEMP_FILE', TEMP_DIR . '/cfg.xml');


$config = new Config\Loader;
$config->addAdapter('xml','Sallyx\Nette\Adapters\XmlAdapter');
$config->addAdapter('xml','Sallyx\Nette\DI\Config\Adapters\XmlAdapter');

$data = $config->load('files/xmlAdapter.xml', 'production');
Assert::same(array(
Expand Down
4 changes: 2 additions & 2 deletions tests/Adapters/XmlAdapter.services.phpt
@@ -1,10 +1,10 @@
<?php

/**
* Test: Sallyx\Nette\Adapters\XmlAdapter
* Test: Sallyx\Nette\DI\Config\Adapters\XmlAdapter
*/

use Sallyx\Nette\Adapters\XmlAdapter;
use Sallyx\Nette\DI\Config\Adapters\XmlAdapter;
use Nette\DI\Statement;
use Tester\Assert;

Expand Down
2 changes: 1 addition & 1 deletion tests/Bootstrap/Configuration.phpt
Expand Up @@ -15,7 +15,7 @@ define('TEMP_FILE', TEMP_DIR . '/cfg.xml');

$config = new Configurator;
$config->setTempDirectory(TEMP_DIR);
$config->addAdapter('xml','Sallyx\Nette\Adapters\XmlAdapter');
$config->addAdapter('xml','Sallyx\\Nette\\DI\\Config\\Adapters\\XmlAdapter');

$data = $config->addConfig(__DIR__.'/files/xmlAdapter.xml', 'development');
$container = $config->createContainer();
Expand Down

0 comments on commit f499618

Please sign in to comment.