phpf / common
Phpf Common 包
dev-master
2015-01-31 21:36 UTC
Requires
- php: >=5.3
This package is not auto-updated.
Last update: 2024-09-14 16:07:35 UTC
README
通用类库,包括灵活的自动加载程序和各种容器。
命名空间:Phpf\Common
依赖:无
### 类 ##### 容器
Container
DataContainer
EnhancedContainer
EnhancedDataContainer
SerializableContainer
SerializableDataContainer
##### 注册
Registry
StaticRegistry
##### 其他
Autoloader
ClassAliaser
### 关于
#### 容器 容器提供了一个通用的对象接口,基于4个核心方法
get($var)
- 获取一个项。set($var, $val)
- 设置一个项。exists($var)
- 返回一个项是否存在。remove($var)
- 移除一个项。
容器还有以下附加方法
import($vars)
- 从关联数组或可迭代对象中设置项。toArray($indexed = false)
- 以数组形式返回项,可选地索引。count()
- 实现Countable
getIterator()
- 实现IteratorAggregate
。
容器实现了 ArrayAccess
以及四个魔术方法 __get()
、__set()
、__isset()
和 __unset()
。魔术和数组访问方法都基于四个核心方法,这意味着子类只需重写四个核心方法。
##### Container
Container
类是最简单的容器类型。每个项都是一个属性 - 例如,$container->set('name', 'Jim')
将设置对象属性 name
为 Jim
。
##### DataContainer
DataContainer
类具有与基本容器相同的方法;然而,项存储在单个数组属性 data
中。使用上述相同的示例,数据容器将向其 data
属性添加一个具有键 name
和值 Jim
的数组条目。
##### EnhancedContainer
“增强”容器(EnhancedContainer
和 EnhancedDataContainer
)允许添加可调用的属性,然后作为对象方法调用,就像 JavaScript 一样。
例如
$container = new \Phpf\Common\EnhancedContainer; $container->set('formalize', function ($last_name, $gender) { switch($gender) { case 'doctor': $pre = 'Dr.'; break; case 'male': $pre = 'Mr.'; break; case 'female': $pre = 'Ms.'; break; } return $pre.' '.$last_name; }); echo $container->formalize('Jones', 'male'); // prints "Mr. Jones"