calderawp / caldera-containers
0.2.0
2018-05-05 22:43 UTC
Requires
- php: ^5.6|^7.0
- pimple/pimple: ^3.2
- psr/container: ^1.0@dev
Requires (Dev)
- jakub-onderka/php-parallel-lint: ^1.0
- phpunit/phpunit: 5.0.*
- squizlabs/php_codesniffer: ^3.2
This package is auto-updated.
Last update: 2024-09-09 13:40:09 UTC
README
Caldera(或您的)开发中一系列有用的容器集合。
安装
composer require calderawp/caldera-containers
需要PHP 5.6+
容器
-
calderawp\CalderaContainers\Container
基础PSR-11兼容容器装饰Pimple。- 是抽象的。
- 转换为数组。
calderawp\CalderaContainers\Interfaces\Arrayable
- 转换为JSON。
JsonSerializable
-
calderawp\CalderaContainers\ControlledContainer
扩展基础容器但仅允许指定的属性。- 是抽象的。
-
calderawp\CalderaContainers\Service\Container
一个基本的容器,具有提供者绑定、延迟加载对象和单例。
用法
calderawp\CalderaContainers\Container
@todo
calderawp\CalderaContainers\ControlledContainer
@todo
calderawp\CalderaContainers\Service\Container
绑定为工厂
添加一个返回相同类的新对象的绑定,使用别名 std
$container = new \calderawp\CalderaContainers\Service\Container(); $container->bind( 'std', function (){ $obj = new \stdClass(); $obj->foo = rand(); return $obj; }); //$obj1->foo !== $obj2->foo $obj1 = $container->make('std'); $obj2 = $container->make('std');
绑定单例
添加一个返回相同类的相同对象的绑定,使用别名 std
。您必须在绑定之前实例化类。
$container = new \calderawp\CalderaContainers\Service\Container(); $obj = new \stdClass(); $obj->foo = rand(); $container->singleton( 'std', $obj ); //$obj1->foo === $obj2->foo $obj1 = $container->make('std'); $obj2 = $container->make('std');
绑定延迟加载的单例
添加一个返回相同类的相同对象的绑定,使用别名 std
。类实例化1次,但仅在需要时才实例化,如果需要的话。
$container = new \calderawp\CalderaContainers\Service\Container(); $container->singleton( 'std', function (){ $obj = new \stdClass(); $obj->foo = rand(); return $obj; }); //$obj1->foo === $obj2->foo $obj1 = $container->make('std'); $obj2 = $container->make('std'); ## Stuff. Copyright 2018 CalderaWP LLC. License: GPL v2 or later.