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中有关长整数的一些操作教程)
- php编程输出菱形(php输出反斜杠的实例方法)
- apachephp环境搭建(apache集成php7.3.5的详细步骤)
- dedecms注册怎么给权限(织梦DedeCms系统未审核文档禁止动态浏览修改方法view.php)
- php 大文件切片(PHP大文件切割上传功能实例分析)
- php nginx 底层执行流程(nginx/apache/php隐藏http头部版本信息的实现方法)
- php实现session入库实例(PHP使用Session实现上传进度功能详解)
- dedecms怎么调用标签(dedecms直接访问域名不能跳转到index.php)
- phpstudy怎么修改mysql版本(PhpStudy集成环境升级MySQL数据库版本的方法)
- 如何用wampserver打开自己写的php(WampServer下安装多个版本的PHP、mysql、apache图文教程)
- php语法分析方法(PHP中localeconv函数的用法)
- php的流程控制语句(php基于 swoole 实现的异步处理任务功能示例)
- php 5与7有什么改变(php5与php7的区别点总结)
- php微信公众号管理后台(php实现微信公众号创建自定义菜单功能的实例代码)
- 怎么用php开发验证码(PHP简单验证码功能机制实例详解)
- php私有函数怎么调(php intval函数用法总结)
- 开国中将,王牌军63军首任政委,两个连襟一个上将一个少将传为佳话(王牌军63军首任政委)
- 臭名昭著的731部队最高负责人 石井四郎(臭名昭著的731部队最高负责人)
- 王牌部队,你看的剧情我看的时尚(你看的剧情我看的时尚)
- 被鉴定的古董价值300万 当心,你可能遇到诈骗了(被鉴定的古董价值300万)
- 英语难学吗(初中英语难学吗)
- 如何追女孩子(如何追女孩子的技巧和方法)
热门推荐
- 简单了解一门编程语言的几个建议
- h5支付接口第四方支付(h5移动端调用支付宝、微信支付的实现)
- 欧洲云服务器和VPS有哪些区别?(欧洲云服务器和VPS有哪些区别?)
- js基础入门到高级教程(浅谈如何循序渐进的学好JS)
- python如何将xls转成xlsx(Python这样操作能存储100多万行的xlsx文件)
- sqlserver判断null(SQL Server索引超出了数组界限的解决方案)
- 在vs中设置Javascript的智能提示
- http403错误怎么解决(HTTP 错误 403.1 - 禁止访问:执行访问被拒绝。 解决方法该页无法显示)
- css中id和类的区别(CSS新增的:where和:is伪类函数是什么)
- css怎么设计文字阴影(css实现动态阴影、蚀刻文本、渐变文本效果)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9