2012-08-14 58 views
2

在php中$_foo_foo有什么区别?

+5

一个是变量,另一个是“假定”是一个常量。你为什么问这个问题? – Matt 2012-08-14 14:13:28

回答

8

一是指一个名为_foovariable。第二个是指名为_fooglobal constant。当您试图访问一个未定义的变量或undefined constant

默认情况下PHP会发出低严重错误。在这种情况下,变量的“值”将假定为null,而常量的“值”将被假定为其名称的字符串化版本 - 在此例中为'_foo'

+0

有一点需要补充:如果PHP没有找到常量,PHP假定它是一个没有引号的字符串! – ComFreek 2012-08-14 14:15:02

+0

@ComFreek:正在编辑提及此。感谢您的意见。 – Jon 2012-08-14 14:15:30

+0

“第二个是指一个全局变量命名_foo” 错误,_foo(单下划线)是一种保护方法,双下划线是一个私有方法 – Dorian 2012-08-14 14:23:30

-1

变量前面有美元符号($)。在一个方法之前的下划线(没有美元符号)表示它是受保护的,双下划线表示它是私人的,它们不能被外部调用。

+0

这里解释:[http://php.net/manual/en/language.oop5.magic.php](http://php.net/manual/en/language.oop5.magic.php) – Dorian 2012-08-14 14:25:17

相关问题