PHP学习第十六课:魔术方法触发的实例

2022-10-11 21:40:38 136 0
魁首哥

感谢关注 PHP学习坊 ,文章内容由 PHP学习坊 收集整理,如有错误或者疏漏之处,欢迎在评论区指出,也欢迎大家积极评论转发。小编需要来自你们订阅、评论的支持,吐槽也好,支持也罢,欢迎大家积极评论。

今天演示一下昨天的内容,魔术方法是如何进行触发的,先来截图感受下。

代码demo

完整代码的执行结果

/**

* Created by PhpStorm.

* User: PHP学习坊

* Date: 17/2/28

* Time: 下午9:54

*/

class Magic

{

/**

* Magic constructor. 构造函数 ,自动执行

*/

public function __construct()

{

echo “我是构造函数,在类 实例化 的时候,我会自动执行\n”;

}

/**

* @param $name 要访问的变量

* 访问一个不存在的成员变量自动触发

*/

public function __get($name)

{

echo “我访问了一个不存在的成员变量{$name}\n”;

}

/**

* @param $name 变量名

* @param $value 变量值

* 为一个不存在的成员变量赋值,自动触发

*/

public function __set($name, $value)

{

echo “为不存在的成员变量 {$name} 赋值 {$value} \n”;

}

/**

* @param $name 方法名

* @param $arguments 参数

* 调用一个不存在的方法是触发

*/

public function __call($name, $arguments)

{

echo “我调用了不存在的方法{$name},参数是”.implode( ‘,’ , $arguments ).”\n”;

require_once ‘A.php’;

}

/**

* 对象被克隆时触发

*/

public function __clone()

{

echo “对象被克隆时触发\n”;

}

/**

* @return string

* 尝试echo一个对象时触发

*/

public function __toString()

{

return “我是__toString,尝试echo一个对象时触发\n”;

}

/**

* 对象销毁时触发

*/

public function __destruct()

{

echo “我是 析构函数 ,对象销毁时触发\n”;

}

public static function __callStatic( $name, $arguments )

{

echo “我调用了不存在的 静态方法 {$name},参数是”.implode( ‘,’ , $arguments ).”\n”;

}

}

$magic = new Magic(); //触发__construct

$magic->test; //触发__get

$magic->test = ‘test’; //触发__set

$magic->test( ‘a’ , ‘b’ , ‘c’ ); //触发__call

$a = new A(); //触发__autoload

/**

* @param $class 类名

* 试图实例化一个不存在的类时候触发

*/

function __autoload( $class )

{

echo “试图实例化类{$class},但是类不存在,我可以尝试从其他地方加载类A\n”;

}

$a = clone $magic; //触发__clone

echo $magic; //触发__toString

Magic::test(); //触发__callStatic

?>

以上就是昨日内容的一些代码示例,这里只是演示,既然特定情况下,能触发指定的魔术方法,我们自然可以做一些我们需要的操作,这就是他们被称为魔术方法的原因。

以上是今天的内容。

收藏
分享
海报
0 条评论
136
上一篇:你应该这个姿势学习PHP(1) 下一篇:从这3方面理解php中的用户交互,却有不少新手搞不清!

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码