2017 © Pedro Peláez
 

library configuration

Array class for configurations

image

volcanus/configuration

Array class for configurations

  • Monday, October 2, 2017
  • by k-holy
  • Repository
  • 1 Watchers
  • 0 Stars
  • 334 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 9 Versions
  • 0 % Grown

The README.md

Volcanus_Configuration

Latest Stable Version Continuous Integration, (*1)

使い方

<?php
use Volcanus\Configuration\Configuration;

assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_CALLBACK, function ($file, $line) {
    echo '

' . htmlspecialchars(sprintf("Assertion Failed: at %s[%d]\n", $file, $line)) . '
'; }); $config = new Configuration(); echo '

define()メソッドで項目を定義, (*2)

'; $config->define('foo'); assert($config->foo === null); try { $config->bar = true; } catch (\InvalidArgumentException $e) { echo '

定義されていない項目へのアクセスは InvalidArgumentException, (*3)

'; } echo '

define()メソッドでは項目の初期値も定義できる, (*4)

'; $config->define('bar', true); assert($config->bar); echo '

定義された項目は値を変更できる, (*5)

'; $config->bar = false; assert($config->bar === false); try { $config->define('bar', false); } catch (\InvalidArgumentException $e) { echo '

同名の項目は再定義できない, (*6)

'; } echo '

コンストラクタで定義できる, (*7)

'; $config = new Configuration([ 'foo' => null, 'bar' => true, ]); assert($config->foo === null); echo '

プロパティアクセス、配列アクセスのどちらも実装済み, (*8)

'; $config = new Configuration([ 'foo' => false, 'bar' => true, ]); $config['foo'] = true; $config->bar = false; assert($config['foo'] === $config->foo); assert($config['bar'] === $config->bar); echo '

クロージャを値にして設定値を動的に※オプション, (*9)

'; $config = new Configuration([ 'foo' => 0, 'bar' => function($config) { return $config['foo'] * 2; }, ], Configuration::EXECUTE_CALLABLE); assert($config['bar'] === 0); $config['foo'] = 1; assert($config['bar'] === 2); $config['foo'] = 5; assert($config['bar'] === 10); echo '

Traversable(IteratorAggregate), Countableも実装済み, (*10)

'; $config = new Configuration([ 'foo' => false, 'bar' => true, ]); foreach ($config as $name => $value) { switch ($name) { case 'foo': assert($value === false); break; case 'bar': assert($value === true); break; } } assert(count($config) === 2); echo '

再帰的に配列アクセス・プロパティアクセス, (*11)

'; $config = new Configuration([ 'array' => ['a' => 'A', 'b' => 'B', 'c' => 'C'], 'object' => new \ArrayObject([ 'a' => new \ArrayObject([ 'a' => ['a' => 'A', 'b' => 'B', 'c' => ['a' => 'A', 'b' => 'B', 'c'=> 'C']], ]), ]), ]); assert('A' === $config['array']['a']); assert('B' === $config['array']['b']); assert('C' === $config['array']['c']); assert('A' === $config['object']['a']['a']['a']); assert('B' === $config['object']['a']['a']['b']); assert('A' === $config['object']['a']['a']['c']['a']); assert('B' === $config['object']['a']['a']['c']['b']); assert('C' === $config['object']['a']['a']['c']['c']); assert('A' === $config->array->a); assert('B' === $config->array->b); assert('C' === $config->array->c); assert('A' === $config->object->a->a->a); assert('B' === $config->object->a->a->b); assert('A' === $config->object->a->a->c->a); assert('B' === $config->object->a->a->c->b); assert('C' === $config->object->a->a->c->c); echo '

実体はオブジェクトなので、純粋な配列への変換はtoArray()メソッドで, (*12)

'; $array = $config->toArray(); assert('A' === $config['array']['a']); assert('B' === $config['array']['b']); assert('C' === $config['array']['c']); assert('A' === $config['object']['a']['a']['a']); assert('B' === $config['object']['a']['a']['b']); assert('A' === $config['object']['a']['a']['c']['a']); assert('B' === $config['object']['a']['a']['c']['b']); assert('C' === $config['object']['a']['a']['c']['c']); assert(is_array($array)); assert(is_array($array['array'])); assert(is_array($array['object'])); assert(is_array($array['object']['a'])); echo '

JSON文字列から生成, (*13)

'; $config = Configuration::createFromJson(<<<'JSON' { "foo": true, "bar": false, "arr": ["A", "B", "C"], "dict": { "a": "A", "b": "B", "c": "C" } } JSON ); assert($config['foo'] === true); assert($config['bar'] === false); assert('A' === $config['arr'][0]); assert('B' === $config['arr'][1]); assert('C' === $config['arr'][2]); assert('A' === $config['dict']['a']); assert('B' === $config['dict']['b']); assert('C' === $config['dict']['c']); echo '<p>offsetExists() の実装による未定義キーへの isset()</p>'; $config = new Configuration([ 'foo' => false, 'bar' => null, ]); assert(true === isset($config['foo'])); assert(false === isset($config['bar'])); assert(false === isset($config['baz'])); echo '

__isset() の実装による未定義プロパティへの isset(), (*14)

'; $config = new Configuration([ 'foo' => false, 'bar' => null, ]); assert(true === isset($config->foo)); assert(false === isset($config->bar)); assert(false === isset($config->baz)); echo '

offsetUnset() の実装による配列アクセスでの unset(), (*15)

'; $config = new Configuration([ 'foo' => false, ]); assert(true === isset($config['foo'])); unset($config['foo']); assert(false === isset($config['foo'])); echo '

__unset() の実装によるプロパティアクセスでの unset(), (*16)

'; $config = new Configuration([ 'foo' => false, ]); assert(true === isset($config->foo)); unset($config->foo); assert(false === isset($config->foo));

対応環境

  • PHP 8.1以降

The Versions

02/10 2017

dev-master

9999999-dev https://github.com/k-holy/volcanus-configuration

Array class for configurations

  Sources   Download

MIT

The Requires

  • php ^5.6||^7.0

 

The Development Requires

by Avatar k-holy

02/10 2017

dev-develop

dev-develop https://github.com/k-holy/volcanus-configuration

Array class for configurations

  Sources   Download

MIT

The Requires

  • php ^5.6||^7.0

 

The Development Requires

by Avatar k-holy

02/10 2017

1.0.0

1.0.0.0 https://github.com/k-holy/volcanus-configuration

Array class for configurations

  Sources   Download

MIT

The Requires

  • php ^5.6||^7.0

 

The Development Requires

by Avatar k-holy

26/09 2017

0.7.0

0.7.0.0 https://github.com/k-holy/volcanus-configuration

Array class for configurations

  Sources   Download

MIT

The Requires

  • php >=5.3.9

 

The Development Requires

by Avatar k-holy

16/05 2016

0.6.0

0.6.0.0 https://github.com/k-holy/volcanus-configuration

Array class for configurations

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

by Avatar k-holy

17/04 2015

0.5.1

0.5.1.0 https://github.com/k-holy/volcanus-configuration

Array class for configurations

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

by Avatar k-holy

09/07 2014

0.5.0

0.5.0.0 https://github.com/k-holy/volcanus-configuration

Array class for configurations

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Avatar k-holy

25/11 2013

0.4.4

0.4.4.0 https://github.com/k-holy/volcanus-configuration

Array class for configurations

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Avatar k-holy

21/10 2013

0.4.3

0.4.3.0 https://github.com/k-holy/volcanus-configuration

Array class for configurations

  Sources   Download

MIT

The Requires

  • php >=5.3

 

by Avatar k-holy