phpf/common

Phpf Common 包

dev-master 2015-01-31 21:36 UTC

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') 将设置对象属性 nameJim

##### DataContainer DataContainer 类具有与基本容器相同的方法;然而,项存储在单个数组属性 data 中。使用上述相同的示例,数据容器将向其 data 属性添加一个具有键 name 和值 Jim 的数组条目。

##### EnhancedContainer “增强”容器(EnhancedContainerEnhancedDataContainer)允许添加可调用的属性,然后作为对象方法调用,就像 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"