内容简介:先不多说,直接上代码,如下:运行结果:方法总结:
先不多说,直接上代码,如下:
class Demo
{
private $str = 'str';
//实例化时自动加载function
public function __construct()
{
echo "start<br/>";
}
//__call()用来获取没有定义的function
public function __call($name, $arguments)
{
echo $name.'_call<br>';
}
//获取私有变量
public function __get($name)
{
// TODO: Implement __get() method.
echo $this->$name.'_get<br/>';
}
//通过关键字 clone 克隆一个对象时该对象调用__clone()方法
public function __clone()
{
// TODO: Implement __clone() method.
}
//__set()设置私有变量的值
public function __set($name, $value)
{
// TODO: Implement __set() method.
$this->$name = $value;
}
//————callStatic()调用没有被定义的static静态function
public static function __callStatic($name, $arguments)
{
// TODO: Implement __callStatic() method.
echo $name.'_classStatic';
}
//删除类对象时候自动调用
public function __destruct()
{
// TODO: Implement __destruct() method.
echo "end";
}
}
$class = new Demo();
$class->success();
$class->succ = 111;
echo $class->succ;
echo $class->str;
echo '<br>';
$obj = clone $class;
print_r($obj);
echo '<br>';
$class::end();
运行结果:
start success_call 111str_get clone Demo Object ( [str:Demo:private] => str [succ] => 111 ) end_classStatic endend
方法总结:
- __set(),__get(),__isset(),__unset()可以归之为一类,适用于私有变量的设置、取值、判断、删除的操作。
-
__construct()构造函数,__desctruct()析构函数,实例化类的时候就会产生,有一点不同,构造在最前面,
析构函数在最后面 -
当调用class中没有定义的方法时,会报错fail error,如果class中定义了__call(),会直接调用__call()方法进行操作。
例如:$class->success('data');类中的__call方法开始执行把参数转换为数组形式array([0] => 'data');
__callStatic()方法同理,只是对没有定义的静态方法起作用。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Go Web 编程
[新加坡]Sau Sheong Chang(郑兆雄) / 黄健宏 / 人民邮电出版社 / 2017-11-22 / 79
《Go Web 编程》原名《Go Web Programming》,原书由新加坡开发者郑兆雄(Sau Sheong Chang)创作、 Manning 出版社出版,人名邮电出版社引进了该书的中文版权,并将其交由黄健宏进行翻译。 《Go Web 编程》一书围绕一个网络论坛 作为例子,教授读者如何使用请求处理器、多路复用器、模板引擎、存储系统等核心组件去构建一个 Go Web 应用,然后在该应用......一起来看看 《Go Web 编程》 这本书的介绍吧!