gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章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容器类的两种实现方式示例的文章就讲到这里了,如果你想了解更多关于PHP容器类的两种实现方式示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com