johnroyer / php-easy-container
一个简单的Composer插件
v1.1.1
2019-10-28 12:48 UTC
Requires
- php: >=7.2
Requires (Dev)
- phpunit/phpunit: ^8.0
- satooshi/php-coveralls: ~1.0
This package is auto-updated.
Last update: 2024-09-29 04:42:56 UTC
README
单例和某些功能的实现。
要求
- PHP >= 5.6
安装
使用composer
composer require johnroyer/php-easy-container
简单用法
将您想要的内容放入容器中
use \Zeroplex\Container\Container; $c = new Container; // set value as singleton $c['pi'] = 3.14159; $c['db'] = new PDO( 'mysql:dbname=mydb;host=localhost', 'user', 'password' );
从容器中获取内容
$c['pi']; // 3.14159 $c['db']; // object(PDO)
单例
如果您使用 ArrayAccess 接口从容器访问数据,容器将它们视为单例,如下例所示。
您还可以使用方法 singleton() 将数据放入容器
$c->singleton('db') = new PDO( 'mysql:dbname=mydb;host=localhost', 'user', 'password' ); $c->get('db'); // object(PDO)
您还可以将全局变量放入容器
$c->singleton('config') = new Config( APP_ROOT . '/config' ); $c['config']['app.name'];
延迟初始化
有时,您不确定一个数据库连接是否应该在程序启动时初始化。也许在真正需要时连接到数据库是一个更好的主意。
使用 Closure 让容器知道您想稍后初始化它
$c['db'] = function () { return new PDO( 'mysql:dbname=test;host=localhost', 'user', 'password' ); }; $c->get('db'); // new PDO if and only if someone get it // object(PDO)
提供
容器可以包含有状态和无状态的内容。 provide() 方法存储无状态的业务逻辑或工作流程。
$c->provide('pi', 3.14159265359); $c['pi']; // 3.14159265359 $c->provide('nowDate', function() { // always return special format of date return (new DateTime()) ->format('Y-m-d'); }); $c->['nowDate']; // "2017-12-01"