PHP容器类的两种实现方式示例
2019-07-24 10:57
1536 查看
本文实例讲述了PHP容器类的两种实现方式。分享给大家供大家参考,具体如下:
通过魔术方法实现
class
class MagicContainer{ private $ele; function __construct() { $this->ele = []; } function __set($name, $value) { $this->ele[$name] = $value; } function __get($name) { return $this->ele[$name]; } function __isset($name) { return isset($this->ele[$name]); } function __unset($name) { if(isset($this->ele[$name])){ unset($this->ele[$name]); } } }
usage
$container = new MagicContainer(); $container->logger = function ($msg){ file_put_contents('info.log',$msg.PHP_EOL,FILE_APPEND); }; $logger = $container->logger; $logger('magic container works');
通过ArrayAccess接口实现
class
class ArrayContainer implements ArrayAccess { private $elements; public function __construct() { $this->elements = []; } public function offsetExists($offset){ return isset($this->elements[$offset]); } public function offsetGet($offset){ if($this->offsetExists($offset)){ return $this->elements[$offset]; }else{ return false; } } public function offsetSet($offset, $value){ $this->elements[$offset] = $value; } public function offsetUnset($offset){ if($this->offsetExists($offset)){ unset($this->elements[$offset]); } } }
usage
$container = new ArrayContainer(); $container['logger'] = function ($msg){ file_put_contents('info.log',$msg.PHP_EOL,FILE_APPEND); }; $logger = $container['logger']; $logger('array container works');
Container
class
class Container implements ArrayAccess { private $elements; public function __construct() { $this->elements = []; } public function offsetExists($offset){ return isset($this->elements[$offset]); } public function offsetGet($offset){ if($this->offsetExists($offset)){ return $this->elements[$offset]; }else{ return false; } } public function offsetSet($offset, $value){ $this->elements[$offset] = $value; } public function offsetUnset($offset){ if($this->offsetExists($offset)){ unset($this->elements[$offset]); } } function __set($name, $value) { $this->elements[$name] = $value; } function __get($name) { return $this->elements[$name]; } function __isset($name) { return isset($this->elements[$name]); } function __unset($name) { if(isset($this->elements[$name])){ unset($this->elements[$name]); } } }
usage
$container = new Container(); $container['logger'] = function ($msg){ file_put_contents('info.log',$msg.PHP_EOL,FILE_APPEND); }; $logger = $container->logger; $logger('container works');
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- PHP实现无限极分类的两种方式示例【递归和引用方式】
- 安装php扩展pthreads实现PHP多线程 原创qw871122015-04-16 17:01评论(0)948人阅读 下面介绍两种编译方式: 1、在已有的PHP上编译pthreads扩展 注:需
- Java和PHP两种方式实现上传图片到新浪微博的图床
- php mysqli两种操作方式示例2
- PHP实现无限极分类的两种方式,递归和引用
- php mysqli两种操作方式示例
- PHP实现无限极分类的两种方式,递归和引用
- php两种实现守护进程的方式。
- PHP使用curl请求实现post方式上传图片文件功能示例
- 容器类的两种实现方式
- ThinkPHP3.2.3 实现定时计划的两种方式 -- 1. 框架的行为扩展 2.被定时计划调用的 PHP 脚本
- PHP守护进程的两种常见实现方式详解
- 原生JS实现Ajax通过GET方式与PHP进行交互操作示例
- 原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
- ajax与php交互的get和post两种实现方式
- Android中实现多线程下载的两种方式示例及浅析之一(无断点续传)
- Ajax+PHP实现跨域访问的两种方式
- Android中实现多线程下载的两种方式示例及浅析之二(Thread加断点续传)
- 两种方式实现文字超链接
- php实现xml转换数组的方法示例