我正在把头发拉出来。非常新的PHP,但这是如此基本,我只是无法弄清问题在哪里。以下面的代码片段为例:
class LG_Activity_Processor {
// Activity Types
const STATUS_DRAFT = 'draft';
const STATUS_PUBLISH = 'publish';
...
private $STATUS_FUTURE = 'future';
define ("STATUS_PRIVATE" , 'private');
我原本打算只使用“const”结构,因为变量在运行时之前是完全定义的,我只是认为语法比丑陋的“定义”更漂亮。问题是,当 const 的定义没有出现错误时,每当我在类中稍后引用该常量时,我都会收到以下错误消息:
PHP注意:使用未定义的常量STATUS_PUBLISH - 假定为'STATUS_PUBLISH'
咦?为了清楚起见,这是我用来引用“const”的语法:
$core_fields ['post_status'] = STATUS_PUBLISH;
我甚至尝试过:
$core_fields ['post_status'] = $this->STATUS_PUBLISH;
没有爱。然后我进入绝望状态并最终尝试“定义”。相同的调用语法,但我将定义语法更改为上面针对“STATUS_PRIVATE”所示的语法。这使得事情变得非常值得,因为我现在在定义行上出现致命错误,如下所示:
PHP Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION
我放弃了。我最后只是将变量定义为私有变量(如STATUS_FUTURE示例中所示),然后将其称为:
$core_fields ['post_status'] = $this->STATUS_PUBLISH;
这就像你期望的那样有效,但我忍不住觉得我被骗了以正确的方式去做。关于如何让我的代码重新整理的任何想法?
答案 0 :(得分:6)
访问时应该LG_Activity_Processor::STATUS_DRAFT
。
看看PHP手册,它为您提供了清晰的示例。