您的位置:首页 > 编程学习 > > 正文

php系统转换的三种方式(PHP容器类的两种实现方式示例)

更多 时间:2022-01-17 01:06:06 类别:编程学习 浏览量:257

php系统转换的三种方式

PHP容器类的两种实现方式示例

本文实例讲述了PHP容器类的两种实现方式。分享给大家供大家参考,具体如下:

通过魔术方法实现

class

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • $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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • $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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • $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 容器类
    您可能感兴趣