不能在PHP类中使用“const”和“define”

我正在把这头发拉出来.非常新的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 Notice: Use of undefined constant STATUS_PUBLISH – assumed ‘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;

这就像你期望的那样,但是我忍不住觉得自己被骗了.关于如何让我的代码重新整理的任何想法?

解决方法:

访问时应该执行LG_Activity_Processor :: STATUS_DRAFT.

看一下PHP手册,它为您提供了清晰的示例.

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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...