PHP code example of mordilion / configurable

1. Go to this page and download the library: Download mordilion/configurable library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

mordilion / configurable example snippets




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;
    }
}



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"