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

2025-05-27 0 31

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 php类自动装载、链式操作、魔术方法实现代码 https://www.kuaiidc.com/72028.html

相关文章

发表评论
暂无评论