我有一个包含以下类的页面:
class SimpleClass
{
public $var6 = myConstant;
public $var7 = array(true, false);
}
我在浏览器上运行该页面。它不会抛出任何错误/警告/通知。
但后来我创建了一个像:
这样的对象$newvar = new SimpleClass;
echo $newvar->var6;
它给了我“Notice: Use of undefined constant myConstant
”。
我知道myConstant需要被定义才能被访问,而这种情况并非如此。
我的问题是为什么我只在创建对象后才收到此通知消息?
答案 0 :(得分:1)
您收到错误是因为您在第二个示例中实例化了该类。
$newvar = new SimpleClass();
这会在尝试“编译”它时抛出错误,从而尝试在全局命名空间内利用myConstant
,从而导致错误(,因为它未定义)。 / p>
如果您没有调用该类,则不会抛出错误,因为它未被使用。
由于您实例化了类,因此只会收到错误消息。如果您不这样做,则不会显示错误。这是正确的做法,以及PHP的功能。
答案 1 :(得分:0)
这里当你试图检索$ var6时,假设它像public $ var6 = 56; //任何常数。
了解如何声明常量,如果你想在那里保持不变。或者使用引号,以便将其视为字符串。
<强>字符串强>
<?php
class SimpleClass
{
public $var6 = 'myConstant';
public $var7 = array(true, false);
}
$newvar = new SimpleClass;
echo $newvar->var6;
<强>常数强>
class MyClass
{
const CONSTANT = 'constant value';
}
echo MyClass::CONSTANT . "\n";