2017 © Pedro Peláez
 

library configurable

A library to make your classes configurable

image

mordilion/configurable

A library to make your classes configurable

  • Thursday, November 30, 2017
  • by mordilion
  • Repository
  • 2 Watchers
  • 3 Stars
  • 29 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 10 Versions
  • 12 % Grown

The README.md

Travis Packagist, (*1)

Configurable

Description

Configurable is a small library to make each class configurable with different kinds of configuration objects. Internaly does it create an own type of configuration object to make it more reusable., (*2)

Requirements for YAML support

To use that package with YAML you have to have at least one of the following libraries in your installation., (*3)

Symfony YAML-Component https://github.com/symfony/yaml, (*4)

Spyc (Simple-PHP-YAML-Class) https://github.com/mustangostang/spyc, (*5)

PECL YAML http://php.net/manual/en/book.yaml.php, (*6)

Basic Example

<?php

use Mordilion\Configurable\Configurable;
use Mordilion\Configurable\Configuration\Configuration;

class Something
{
    /**
     * Use the following traits.
     */
    use Configurable;


    /**
     * Default configuration settings.
     *
     * @var array
     */
    private $defaults = array(
        'setting1' => 'http://www.devjunkie.de',
        'setting2' => null,
        'setting3' => 12345
    );

    /**
     * A public property.
     *
     * @var integer
     */
    public $setting3;

    /**
     * Constructor.
     *
     * The provided $configuration will configure the object.
     *
     * @param mixed $configuration
     *
     * @return void
     */
    public function __construct($configuration = null)
    {
        $this->defaults['setting2'] = new \DateTime('now', new \DateTimeZone('America/Chicago'));

        $this->setConfiguration(new Configuration($this->defaults));

        if ($configuration != null) {
            $this->addConfiguration(new Configuration($configuration));
        }
    }

    /**
     * Sets the value for setting1.
     *
     * @param string $value
     *
     * @return Something
     */
    public function setSetting1($value)
    {
        $this->configuration->set('setting1', $value);

        return $this;
    }

    /**
     * Sets the value for setting2.
     *
     * @param \DateTime $value
     *
     * @return Something
     */
    public function setSetting2(\DateTime $value)
    {
        $this->configuration->set('setting2', $value); // or $this->configuration->setting2 = $value;

        return $this;
    }
}

Routing Example

Use __get and __set to route through the object directly to the configuration., (*7)

<?php

use Mordilion\Configurable\Configurable;

class Something
{
    /**
     * Use the following traits.
     */
    use Configurable;

    /**
     * A public property.
     *
     * @var mixed
     */
    public $property1;


    /**
     * Routing requests directly to the configuration if needed.
     *
     * @param string $name
     *
     * @return mixed
     */
    public function __get($name)
    {
        if (property_exists($this, $name) || isset($this->$name)) {
            return $this->$name;
        } else if (isset($this->configuration->$name)) {
            return $this->configuration->$name;
        }

        return null;
    }

    /**
     * Routing requests directly to the configuration if needed.
     * 
     * @param string $name
     * @param mixed $value
     *
     * @return void
     */
    public function __set($name, $value)
    {
        if (property_exists($this, $name) || isset($this->$name)) {
            $this->$name = $value;
        } else if (isset($this->configuration->$name)) {
            $this->configuration->$name = $value;
        }
    }
}

// { ... }

$object = new Something();
$obejct->setConfiguration(array('property1' => 'some text', 'property2' => 'some other text')); // simple use
echo $object->property1 . ' -- ' . $object->property2; // => "some text -- some other text"

The Versions

30/11 2017

dev-master

9999999-dev http://github.com/mordilion/Configurable

A library to make your classes configurable

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

configurable class configuration

30/11 2017

0.5.0

0.5.0.0 http://github.com/mordilion/Configurable

A library to make your classes configurable

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

configurable class configuration

28/11 2017

0.4.1

0.4.1.0 http://github.com/mordilion/Configurable

A library to make your classes configurable

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

configurable class configuration

13/11 2017

0.4

0.4.0.0 http://github.com/mordilion/Configurable

A library to make your classes configurable

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

configurable class configuration

25/10 2017

dev-mordilion-patch-1

dev-mordilion-patch-1 http://github.com/mordilion/Configurable

A library to make your classes configurable

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

configurable class configuration

15/04 2017

0.3

0.3.0.0 http://github.com/mordilion/Configurable

A library to make your classes configurable

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

configurable class configuration

24/03 2017

0.2

0.2.0.0 http://github.com/mordilion/Configurable

A library to make your classes configurable

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

configurable class configuration

15/03 2017

0.1

0.1.0.0 http://github.com/mordilion/Configurable

A library to make your classes configurable

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

configurable class configuration

10/03 2017

0.1_beta

0.1.0.0-beta http://github.com/mordilion/Configurable

A library to make your classes configurable

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

configurable class configuration

08/03 2017

0.1_alpha

0.1.0.0-alpha http://github.com/mordilion/Configurable

A library to make your classes configurable

  Sources   Download

MIT

The Requires

  • php >=5.3.0

 

configurable class configuration