2

目前我正在学习php。在这里我很困惑这是我的 php 代码

class OBJECT_ENUM
{
    const USER = 10;
    const POST = 30;
    const SECURE_REQUEST = 40;
}

class OPERATION_ENUM
{
    const INSERT_USER = OBJECT_ENUM::USER + 1; // <- here it gives an error
    const SEND_MAIL = OBJECT_ENUM::USER + 2;

    const LIKE_POST = OBJECT_ENUM::POST + 1;
    const INSERT_POST = OBJECT_ENUM::POST + 2;

    const ENCRYPT = OBJECT_ENUM::SECURE_REQUEST + 1;
}

error message: 
Parse error: syntax error, unexpected '+', expecting ',' or ';' in /var/www/workspace/6thAssignment/include/tempCall.php on line 15

我只是不明白为什么会发生这个错误.?? 谁能解释我.??

先感谢您

4

4 回答 4

4

原始答案:

正如您在http://www.php.net/manual/en/language.oop5.constants.php中看到的:

该值必须是常量表达式,而不是(例如)变量、属性、数学运算的结果或函数调用。

更新:

从 PHP 5.6 版开始,现在可以在常量中使用表达式。

于 2013-10-22T06:37:54.697 回答
1

我认为你不能做数学运算来分配给一个 const 变量。尝试改变

const INSERT_USER = OBJECT_ENUM::USER + 1;

$INSERT_USER = OBJECT_ENUM::USER + 1;
于 2013-10-22T06:36:49.567 回答
1

我相信常量定义中不允许使用表达式(如 $a + 1),所以这就是您收到该错误的原因。

于 2013-10-22T06:38:20.067 回答
0

目前 PHP 不允许这样做。有一个 RFC(征求意见)将其添加到语言中:

https://wiki.php.net/rfc/const_scalar_expressions

然而,由于 RFC 的作者离开了内部开发团队,这被撤回了。所以我怀疑这可能不会很快发生,但这并不是说这不会在以后以某种形式出现。

于 2013-10-22T07:55:10.413 回答