什么时候php对象为null?

时间:2017-02-12 12:53:39

标签: php

我有一个对象,其属性我还没有定义,但下面的检查都没有返回,有利于对象为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

}

谢谢。

1 个答案:

答案 0 :(得分:2)

看看PHP类型: http://php.net/manual/en/language.types.php

object是一种类型,null是另一种类型。

您要将$this->head设置为object Node。尽管如此,Node对象中发生的事情仍然是object

如果您设置this->head = null,则只会将其视为null类型。