litert/delay-initializer

This package is abandoned and no longer maintained. No replacement package was suggested.

A simple delay-initializer library for PHP.

0.3.0 2017-11-07 09:41 UTC

This package is not auto-updated.

Last update: 2023-01-18 23:27:28 UTC


README

Latest Stable Version License

A simple delay-initializer and dependency injection library for PHP.

Installation

It's recommended to install by composer:

composer require litert/delay-initializer

Or just git clone this repository, and put the lib directory into you project.

Samples

Using the delay initializer.

<?php
declare (strict_types = 1);

require 'vendor/autoload.php';

/**
 * @property string $hello
 */
class Tester implements \L\Kits\DelayInit\PropertyContainerEx
{
    use \L\Kits\DelayInit\TPropertyContainerEx;

    public function __construct()
    {
        $this->_initializeDelayInit();

        $this->setInitializer(
            'hello',
            function() {
                echo 'Initialized "hello" here.', PHP_EOL;
                return 'world';
            }
        );
    }
}

$tester = new Tester();

echo 'Now try reading the property "hello" of $tester.', PHP_EOL;

echo $tester->hello, PHP_EOL;

Using the dependency injection container

<?php
declare (strict_types = 1);

require 'vendor/autoload.php';

/**
 * @property string $name
 * @property int $age
 */
class MyDI extends \L\Kits\DelayInit\PropertyDIContainer
{
}

$di = new MyDI();

$di->setInitializer(
    'name',
    function () {
        return 'Mike';
    }
);

$di->setInitializer(
    'age',
    function() {
        return 17;
    }
);

echo "Hi, I'm {$di->name}. I'm {$di->age}.", PHP_EOL;

Would you like to know more?

Document

License

This library is published under Apache-2.0 license.