gpt4 book ai didi

php类自动装载、链式操作、魔术方法实现代码

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

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

这篇CFSDN的博客文章php类自动装载、链式操作、魔术方法实现代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1、自动装载实例 。

目录下有3个文件:index.php load.php tests文件夹 。

tests文件夹里有 test1.php 。

?
1
2
3
4
5
6
7
8
<?php
namespace Tests;
class Test1{
   static function test(){
     echo __CLASS__ . '<br>' ;
     echo __FILE__ . '<br>' ;
   }
}

index.php内容 。

?
1
2
3
<?php
include "load.php" ;
Tests\Test1::test();

load.php内容 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Loader
{
   static function loadClass( $class )
   {
     $class =  __DIR__.DIRECTORY_SEPARATOR. str_replace ( '\\' , '/' , $class ). '.php' ;
     if ( file_exists ( $class )) {
       include $class ;
       return ;
     }
   }
}
spl_autoload_register( array ( 'Loader' , 'loadClass' ));

2、php 链式操作 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
namespace Baobab;
 
class Database{
  function where( $where ){
   return $this ;
  }
 
  function order( $order ) {
   return $this ;
  }
 
  function limit( $limit ){
   return $this ;
  }
}
 
?>
 
//index.php
$db = new Baobab\Database();
$db ->where( 'id = 1' )->order( 'order by id' )->limit(1);

3、魔术方法:

__get/__set:接管对象属性。在给不可访问属性赋值时, 。

__set() 会被调用;读取不可访问属性的值时,__get() 会被调用.

__call/__callStatic:在对象中调用一个不可访问方法时,__call() 会被调用;用静态方式中调用一个不可访问方法时,__callStatic() 会被调用.

__toString:一个类转化成字符串 。

__invoke:以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用.

?
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
<?php
namespace Baobab;
 
class Object{
  protected $array = array ();
  function __set( $key , $value ){
   $this -> array [ $key ] = $value ;
  }
  function __get( $key ){
   //echo __METHOD__;
   return $this -> array [ $key ];
  }
 
  function __call( $func , $param ){
   //var_dump($func,$param);
   return 'magic function' ;
  }
 
  static function __callstatic( $func , $param ) {
   //var_dump($func, $param);
   return 'magic static function' ;
  }
 
  function __toString(){
   return __CLASS__ ;
  }
 
  function __invoke( $param ) {
   return var_dump( $param );
  }
 
}
?
1
2
3
4
5
6
7
$obj = new baobab\Object();
$obj ->title = 'hello' ;
echo $obj ->title;
echo $obj ->test1( 'hello' , 123);
echo $obj ::test1( 'hello1' , 1234);
echo $obj ;
echo $obj ( 'test1' );

以上就是php中自动装载、链式操作、魔术的实现代码,需要的朋友可以参考一下.

原文链接:http://www.cnblogs.com/gide/p/5237600.html 。

最后此篇关于php类自动装载、链式操作、魔术方法实现代码的文章就讲到这里了,如果你想了解更多关于php类自动装载、链式操作、魔术方法实现代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

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