我在这个问题上苦思冥想。虽然我刚开始接触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;
这个功能的作用和你预期的一样,但是我感觉我被欺骗了,没有用正确的方式实现。有什么想法让我的代码变完美吗?
const
。在类外部使用ClassName::CONST_NAME
,在同一类中只需使用self::CONST_NAME
。 - halfer