最近写facade 基类, 有个功能要从 container 里面取组件, facade 里面都是静态调用,但是container 里面都是动态调用,所以要么把container 里面都改成静态的(很麻烦),要么换其他解决方案
ArrayAccess
提供像访问数组一样访问对象的能力的接口。
ArrayAccess {
/* 检查一个偏移位置是否存在 */
abstract public boolean offsetExists ( mixed $offset );
/* 获取一个偏移位置的值 */
abstract public mixed offsetGet ( mixed $offset );
/* 设置一个偏移位置的值 */
abstract public void offsetSet ( mixed $offset , mixed $value );
/* 复位一个偏移位置的值 */
abstract public void offsetUnset ( mixed $offset );
}
为 container 添加 offsetGet()
/**
* ArrayAccess 接口
* @param [type] $key [description]
*/
public function offsetGet($key)
{
return $this->make($key);
}
本文探讨了在Facade模式中如何通过实现ArrayAccess接口解决静态调用与动态调用不匹配的问题。具体介绍了如何为容器类添加offsetGet()方法以支持类似数组的访问方式。
297

被折叠的 条评论
为什么被折叠?



