《PHP学习:PHP魔术方法的使用示例》要点:
本文介绍了PHP学习:PHP魔术方法的使用示例,希望对您有用。如果有疑问,可以联系我们。
PHP实战① __get/__set:将工具的属性进行接管
PHP实战当拜访一个不存在的对象属性时:
PHP实战index.php
PHP实战$obj = new \Common\Object();
PHP实战//在php中拜访一个不存在的对象属性时
echo $obj->title;
PHP实战会抛出一个差错:Notice: Undefined property: Common\Object::$title in D:\practise\php\design\psr0\index.php on line 9
PHP实战当在Common/Object.php 中添加 __set 和 __get 办法后
PHP实战Object.php
PHP实战class Object{
function __set($key,$value){
}
function __get($key){
}
}
PHP实战再执行 index.php,不会再报错.
PHP实战再次改动 Common/Object.php
PHP实战class Object{
protected $array = array();
function __set($key,$value){
var_dump(__METHOD__);
$this->array[$key] = $value;
}
function __get($key){
var_dump(__METHOD__);
return $this->array[$key];
}
}
PHP实战$obj = new \Common\Object();
PHP实战$obj->title = 'hello';
echo $obj->title;
PHP实战执行 index.php,页面输入:
PHP实战② __call/__callStatic:控制 PHP 对象办法的调用(__callStatic 用来控制类的静态办法)
PHP实战当执行一个不存在的php办法时
PHP实战index.php:
PHP实战$obj = new \Common\Object();
PHP实战//当执行一个不存在的php办法时
$obj->test('hello',123);
PHP实战执行 index.php 会报一个致命差错:Fatal error: Call to undefined method Common\Object::test() in D:\practise\php\design\psr0\index.php on line 9
PHP实战如果在 Common/Object 中定义一个__call 办法,则会在办法不存在时自动回调:
PHP实战class Object{
function __call($func, $param){ //$func 办法名 $param 参数
var_dump($func, $param);
return "magic function\n"; //返回一个字符串作为返回值
}
}
PHP实战index.php
PHP实战$obj = new \Common\Object();
PHP实战//当执行一个不存在的php办法时
echo $obj->test('hello',123);
PHP实战页面输入:
PHP实战当调用一个不存在的静态办法时
PHP实战Co妹妹on/Object.php
PHP实战class Object{
static function __callStatic($name, $arguments) {
var_dump($name, $arguments);
return "magic function\n"; //返回一个字符串作为返回值
}
}
PHP实战注意:__callStatic 办法也要声明成静态办法
PHP实战index.php
PHP实战//执行一个不存在的静态办法
echo Common\Object::test("hello",1234);
PHP实战执行 index.php ,页面输入:
PHP实战③ __toString:将一个 PHP 工具转换成一个字符串
PHP实战index.php
PHP实战$obj = new \Common\Object();
PHP实战echo $obj;
PHP实战此时会报错: Catchable fatal error: Object of class Co妹妹on\Object could not be converted to string in D:\practise\php\design\psr0\index.php on line 8
PHP实战在 Object.php 中添加 __toString 办法
PHP实战class Object{
function __toString() {
return __CLASS__;
}
}
PHP实战④ __invoke:将一个 PHP 对象当成一个函数来执行时,会回调此魔术办法
PHP实战index.php
PHP实战$obj = new \Common\Object();
PHP实战echo $obj("test");
PHP实战class Object{
function __invoke($param) {
var_dump($param);
return 'invoke';
}
}
PHP实战页面输入:
维易PHP培训学院每天发布《PHP学习:PHP魔术方法的使用示例》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。