php系统转换的三种方式(PHP容器类的两种实现方式示例)
类别:编程学习 浏览量:257
时间:2022-01-17 01:06:06 php系统转换的三种方式
PHP容器类的两种实现方式示例本文实例讲述了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程序设计有所帮助。
原文链接:https://blog.csdn.net/koastal/article/details/72528456
您可能感兴趣
- php的流程控制语句(PHP基于swoole多进程操作示例)
- nginx和php怎么结合(php和nginx交互实例讲解)
- php探针哪个牌子好用(php探针使用原理和技巧讲解)
- php联合注入列表总结(php中的依赖注入实例详解)
- phpzip压缩原理(PHP生成zip压缩包的常用方法示例)
- php数组取值方法(php给数组赋值的实例方法)
- php面向对象如何开发(PHP创建对象的六种方式实例总结)
- php开发中用什么模板(PHP模版引擎原理、定义与用法实例)
- php重定向网页(phpStudy V8设置301重定向跳转的实现方法)
- thinkphp框架详解(thinkphp3.2框架中where条件查询用法总结)
- php对象和类(PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例)
- phpstudy服务器怎么设置(phpstudy本地环境开启.htaccess伪静态方法)
- php逻辑技巧图解(php版本CKEditor 4和CKFinder安装及配置方法图文教程)
- php验证码初始化教程交流(PHP token验证生成原理实例分析)
- phparray函数的用法(php array_chunk函数用法与注意事项)
- php如何设置命名空间(PHP进阶学习之命名空间基本用法分析)
- 南宋志南和尚绝句 杨柳风似庙中来(南宋志南和尚绝句)
- 今天要穿什么颜色(今天要穿什么颜色的衣服最吉利)
- 一道高中题-求杯子的高度(一道高中题-求杯子的高度)
- 网坛停摆三巨头亏损惨重,费德勒跌幅88 纳达少赚2400万(网坛停摆三巨头亏损惨重)
- Beyond 版本《无人深空》主线任务攻略 阿特拉斯之道(版本无人深空主线任务攻略)
- 全球科技界最有钱大佬TOP 15 你知道几位(全球科技界最有钱大佬TOP)
热门推荐
- tomcat运行中找不到路径(Tomcat将配置文件放在外部的解决方法)
- php 依赖注入(详解php命令注入攻击)
- python初学者必备函数(Python小白必备的8个最常用的内置函数推荐)
- html基础知识javascript(JavaScript+html实现前端页面滑动验证)
- reactnative动态设置值(react native实现监控手势上下拉动效果)
- pythonmath库引入方法(python使用thrift教程的方法示例)
- 织梦dedecms优化安全设置指南(DedeCms V5.5 性能优化方法分享)
- 常用web服务器与简介(最流行的5大开源web服务器)
- jvm运动数据区总结(JVM上高性能数据格式库包Apache Arrow入门和架构详解Gkatziouras)
- tmp文档可以删除吗(tmpwatch命令清除旧文件的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9