本日演示一下昨天的内容,魔术方法是如何进行触发的,先来截图感想熏染下。
代码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
?>
以上便是昨日内容的一些代码示例,这里只是演示,既然特定情形下,能触发指定的魔术方法,我们自然可以做一些我们须要的操作,这便是他们被称为魔术方法的缘故原由。
以上是本日的内容。