我有一个对象,其属性我还没有定义,但下面的检查都没有返回,有利于对象为null。
当我们将对象指定为null时,该对象仅为null。我尝试了很少,并寻找其他替代方案,但没有一个告诉对象是零而是相反。那么我们如何检查对象是否为空,或者以下所有方式都是假的?
或者对象永远不为null,因为它保存属性,即使它们未设置。
class LinkedList implements DataStructure {
public $head;
public function __construct(){
$this->head = new Node;
$this->tail = new Node;
//checking all posibilities i am aware of
echo "are you an object ? ".gettype($this->head);
echo "<br/>are you null ? ".is_null($this->head);
echo "<br/>are you empty ? ".empty($this->head);
echo "<br/>are you null ? ". ($this->head === null);
echo "<br/>what is your count ? ".count($this->head);
echo "<br/>maybe you are not set ? ".isset($this->head);
}
}
这是我的Node类..如果它可以帮助你们帮助我
class Node {
public $next;
public $file;
public $folder;
public $parentDirectory;
}
上述代码的输出是:
are you an object ? object
are you null ?
are you empty ?
are you null ?
what is your count ? 1
maybe you are not set ? 1
同样var_dump($this->head)
会返回此
object(App\Library\DataStructures\Node)#202 (4) {
["next"]=>
NULL
["file"]=>
NULL
["folder"]=>
NULL
["parentDirectory"]=>
NULL
}
谢谢。
答案 0 :(得分:2)
看看PHP类型: http://php.net/manual/en/language.types.php
object
是一种类型,null
是另一种类型。
您要将$this->head
设置为object
Node
。尽管如此,Node
对象中发生的事情仍然是object
。
如果您设置this->head = null
,则只会将其视为null
类型。