PHP对象范围

时间:2013-04-18 04:50:27

标签: php oop scope

有人可以向我解释PHP中对象范围的概念吗?我对PHP中的对象很新,我问的原因是因为我能够在if语句中创建一个对象,然后访问if语句范围之外的对象。

示例:

  //only create object if some condition is met
   if ($conditionTrue){
      $myBook = new Book('PHP for Dummies','softcopy'); 
    }

   $myBook.read();

我认为这会产生错误,但事实并非如此。

我的问题的一些背景

我试图找出如何确定要调用哪个构造函数,具体取决于满足的条件。唯一可以想象的方式是引入一个if statement,但是这样做,我认为会强加scope的问题而不是它,我只是想知道为什么......

2 个答案:

答案 0 :(得分:1)

在PHP中,如果没有自己的范围。所以是的,如果你在if语句或块内部定义了一些东西,那么它就像你在外面定义它一样可用(假设当然,块内的代码或if语句内部的代码都可以运行)。有关PHP范围的更多信息,请阅读variable scope手册页。

答案 1 :(得分:1)

此方案将在 JAVA,C# 等其他语言中生成错误。但是在PHP中,这不会发生。

因为在PHP我们可以在任何地方创建变量,所以不需要先对变量进行初始化,然后在其中分配值。

在这种情况下,当您将值分配给$myBook时,它首先为全局范围初始化变量$myBook。因此,当您访问$myBook外部if块时,它已经存在于全局范围的文档中,因此您可以在不生成错误的情况下访问它。

上述情况有一些限制,例如变量初始化的地方,例如(在函数内,在类中)。