3

我正在把头发拉出来。PHP 很新,但这太基本了,我就是不知道问题出在哪里。以下面的代码片段为例:

class LG_Activity_Processor {
// Activity Types
const STATUS_DRAFT = 'draft';
const STATUS_PUBLISH = 'publish';
...
private $STATUS_FUTURE = 'future';
define ("STATUS_PRIVATE" , 'private');

我最初打算只使用“const”构造,因为变量在运行时之前已经完全定义,我只是认为语法比那个丑陋的“define”更漂亮。问题是虽然const的定义没有给出错误,但每当我稍后在类中引用该常量时,我​​都会收到以下错误消息:

PHP 注意:使用未定义的常量 STATUS_PUBLISH - 假定为 'STATUS_PUBLISH'

嗯?为了清楚起见,这是我用来引用“const”的语法:

$core_fields ['post_status'] = STATUS_PUBLISH;

我什至尝试过:

$core_fields ['post_status'] = $this->STATUS_PUBLISH;

没爱。然后我进入了绝望的状态,最终尝试了“define”。相同的调用语法,但我将定义语法更改为如上所示的“STATUS_PRIVATE”。这让事情变得很有价值,因为我现在在定义行上有一个致命错误,看起来像这样:

PHP Parse error:  syntax error, unexpected T_STRING, expecting T_FUNCTION

我放弃。我最后只是将变量定义为私有变量(如 STATUS_FUTURE 的示例中),然后将其称为:

$core_fields ['post_status'] = $this->STATUS_PUBLISH;

这就像你所期望的那样有效,但我不禁觉得我被骗了,没有以正确的方式做这件事。关于如何使我的代码再次完整的任何想法?

4

1 回答 1

6

LG_Activity_Processor::STATUS_DRAFT访问它时应该这样做。

查看 PHP 手册,它为您提供了清晰的示例。

http://php.net/manual/en/language.oop5.constants.php

于 2012-04-30T22:59:23.000 回答