gpt4 book ai didi

php - 不能在 PHP 类中使用 "const"和 "define"

转载 作者:可可西里 更新时间:2023-11-01 00:35:11 24 4
gpt4 key购买 nike

我在这个问题上大发雷霆。 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”。这让事情变得很有值(value),因为我现在在定义行上有一个 fatal error ,看起来像这样:

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

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

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

这就像您期望的那样工作,但我忍不住觉得我被骗了,没有以正确的方式去做。关于如何使我的代码再次完整的任何想法?

最佳答案

访问它时,您应该执行 LG_Activity_Processor::STATUS_DRAFT

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

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

关于php - 不能在 PHP 类中使用 "const"和 "define",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10391619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com