packagon / fiber
Pagon 的依赖注入容器
Requires
- php: >=5.3.0
- pagon/eventemitter: *
This package is not auto-updated.
Last update: 2024-09-14 13:47:35 UTC
README
Fiber 是一个基于 PHP5.3 的 依赖注入容器
,介绍
Fiber 在一些 API 上借鉴了 Pimple,但使用了对象调用方式
Fiber是该库的基础,与其不同之处在于Pagon\Fiber
默认继承了EventEmitter,方便基于Fiber就能够有事件驱动。
依赖
- PHP5.3+
安装
直接require文件
require_once '/path/to/Fiber.php';
使用 composer
添加
"pagon/fiber": "*"
到composer.json
接着安装
composer.phar install
使用
创建空的容器
$dic = new Fiber();
创建带成员的容器
$dic = new Fiber(array( 'db' => new Database(); ));
例子
定义参数
使用对象成员赋值的方式来定义参数
$dic->db_host = 'localhost'; $dic->db_name => 'test';
使用对象成员调用的方式来获取
$db_host = $dic->db_host;
定义服务
使用对象成员赋值的方式来定义一个匿名函数作为服务
// $dic也会做为参数传入 $dic->random = function ($dic) { return random(); }; $dic->time = function ($dic) { return time(); };
使用的时候直接调用成员
$random = $dic->random; $time = $dic->time;
注意
每次获取成员,函数都会被重新调用,所以不适合做数据库,缓存等需要连接资源的服务
定义共享服务
定义共享服务是指对给出的定义单例化,比较适合用来数据库对象等服务
// 标准方式 $dic->db = $dic->share(function ($dic) { return new Database($dic->db_host); }); // 键名定义方式 $dic->share('db', function ($dic) { return new Database($dic->db_host); });
使用
$db = $dic->db; // 如果重新调用 $db1 = $dic->db // 这时候$db1和$db共享同一个数据库
自定义函数
自定义函数允许你配置一个自己可完全控制的函数,函数不会作为服务提供
// 标准定义 $dic->save = $dic->protect(function($key, $value){ return $_SESSION[$key] = $value; }) // 键名定义 $dic->protect('save', function($key, $value){ return $_SESSION[$key] = $value; })
使用
// 获取函数再调用 $save = $dic->save; $save('test', 'value'); // 直接调用 $dic->save('test', 'value');
扩展服务
扩展服务允许对现有的服务进行加工,并返回新的服务
注意:只能使用键名的方式进行扩展,如果要想保持共享服务,扩展时也需要使用共享定义
$dic->extend('db', $dic->share(function ($db, $dic) { $db->select($dic->db_name); return $db; }));
许可证
(MIT许可证)
版权 (c) 2012 hfcorriez <hfcorriez@gmail.com>
以下是对任何获得此软件及其相关文档文件(以下简称“软件”)副本的个人免费许可,允许个人在不限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向提供软件的个人提供这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论这些责任是基于合同、侵权或其他方式引起的,无论这些责任是否与软件或其使用或其它交易有关。