2

有人可以向我解释 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它没有的问题,我只是想知道为什么..

4

2 回答 2

1

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

于 2013-04-18T04:54:21.533 回答
1

这种情况会在其他语言中产生错误,例如JAVA,C#. 但在PHP这种情况下不会发生。

因为PHP我们可以在任何地方创建变量,而无需先初始化变量,然后再为其赋值。

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

上面的场景有一些限制,比如变量的初始化位置,例如(在函数内,在类内)。

于 2013-04-18T04:59:25.790 回答