该方法先判断对象是否含有这个属性,如果有就返回真;

如果对象没有这个属性,则判断对象对应的类是否定义过这个属性,如果定义过返回真,否则返回假。

如下:

<?php
class dunk{
public $name;

public function __construct($name)
{
$this->name = $name;
}
}
$tp = new dunk("可达鸭");
unset($tp->name);

//1.ture
if(property_exists($tp,'name')){
echo '<br/>'."true";
}else{
echo '<br/>'."false";
}

//属性重载
$tp->age = 24;
//2.true
if(property_exists($tp,'age')){
echo '<br/>'."true";
}else{
echo '<br/>'."false";
}

unset($tp->age);
//3.false
if(property_exists($tp,'age')){
echo '<br/>'."true";
}else{
echo '<br/>'."false";
}

1中,虽然tp中的name被unset掉了,但是其对应类dunk中定义过name属性,因此返回为ture。

2中,定义了类中没有的属性age并将其赋值为24,此时对象有这个age属性,因此返回为true。

3总,由于unset了age属性,并且类中没有age属性,因此返回false。