php知识碎片化学习
在我们实际PHP开发中,会经常用到类
而类呢,里面有几个常用的魔法函数,今天我们就来实际代码应用一下
加深大家对它的理解!
下面先说第一个吧
__construct
内置构造函数,在对象被创建时自动调用
下面我们用代码看看,如何用的!class One {
public function __construct() {
echo '我在睡觉
';
}
public function wakeUp() {
echo '我醒了
';
}
}
$demo = new One();
$testObject->wakeUp();
以下代码我们看到结果我在睡觉
我醒了
__destruct
析构方法的作用和构造方法__construct刚好相反,它只是在对象被垃圾收集器收集之前自动调用,我们可以利用该方法做一些必要的清理工作
代码如下:class One {
public function __construct() {
echo '我在睡觉
';
}
public function wakeUp() {
echo '我醒了
';
}
function __destruct() {
echo "我消失了
";
}
}
$demo = new One();
unset($demo);
显示结果我在睡觉
我消失了
__clone
在PHP 5之后的版本中,对象之间的赋值为引用赋值,即赋值后的两个对象将指向同一地址空间,如果想基于对象赋值,可以使用PHP提供的clone方法。该方法将当前对象浅拷贝之后的副本返回,如果想在clone的过程中完成一些特殊的操作,如深拷贝,则需要在当前类的声明中实现__clone方法,该方法在执行clone的过程中会被隐式调用。另外需要格外注意的是,__clone方法是作用在被拷贝的对象上,即赋值后的对象上执行。
代码如下:class One {
public $id=180;
public function height() {
echo '我的身高有'.$this->id.'厘米
';
}
}
class Two {
public $one;
public function __construct() {
$this->one = new One();
}
public function __clone() {
$this->one = clone $this->one;
echo '我复制了你的身高
';
}
}
$two=new Two();
echo '复制前
';
$twocopy=clone $two;
echo '复制后
';
$two->one->id=200;
echo '本尊:';
$two->one->height();
echo '分身:';
$twocopy->one->height();
显示结果如下复制前
我复制了你的身高
复制后
本尊:我的身高有200厘米
分身:我的身高有180厘米
以上只是个人在学习PHP中,个人的一些知识点理解,谈不上什么深度,做一些日常记录!希望与大家分享!