您的位置 首页 php

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

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

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

代码demo

完整代码的执行结果

<?php

/**

* 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

?>

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

以上是今天的内容。

文章来源:智云一二三科技

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

文章地址:https://www.zhihuclub.com/79750.shtml

关于作者: 智云科技

热门文章

网站地图