Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么可以';我是否在类字段/属性中使用常量?_Php_Class_Constants - Fatal编程技术网

Php 为什么可以';我是否在类字段/属性中使用常量?

Php 为什么可以';我是否在类字段/属性中使用常量?,php,class,constants,Php,Class,Constants,例如: const USERNAME_MIN_LENGTH = '2'; private $uesrname_error_message= 'ERROR: Max. username length is ' . USERNAME_MIN_LENGTH; 我使用上面提供的代码得到此错误: Parse error: syntax error, unexpected '.', expecting ',' or ';' 定义了$test变量的行发生错误 我使用的是PHP5.5.12version 为

例如:

const USERNAME_MIN_LENGTH = '2';
private $uesrname_error_message= 'ERROR: Max. username length is ' . USERNAME_MIN_LENGTH;
我使用上面提供的代码得到此错误:

Parse error: syntax error, unexpected '.', expecting ',' or ';'
定义了$test变量的行发生错误

我使用的是
PHP5.5.12
version


为什么?

您需要在构造函数中定义变量
$test
,如下所示:

class yourClass{
    private $test;
    function __construct(){
        const USERNAME_MIN_LENGTH = '2';
        $this->test = 'Max. username length is ' . USERNAME_MIN_LENGTH;
    }
}
这仅适用于
PHP5.6


private$test='用户名的最大长度为'。用户名\最小\长度

您需要在构造函数中定义变量
$test
,如下所示:

class yourClass{
    private $test;
    function __construct(){
        const USERNAME_MIN_LENGTH = '2';
        $this->test = 'Max. username length is ' . USERNAME_MIN_LENGTH;
    }
}
这仅适用于
PHP5.6


private$test='用户名的最大长度为'。用户名\最小\长度

表达式。从PHP5.6开始允许使用某些表达式。你可以在网上了解更多


您的特定示例应该可以在PHP5.6中使用。

属性声明中的表达式还不受PHP支持。从PHP5.6开始允许使用某些表达式。你可以在网上了解更多



您的特定示例应该在PHP5.6中工作。

在声明类属性时,不能连接值。为此使用构造函数。虽然在你的例子中,这两种方法都没有意义。我想为消息设置一个常量,但我不能将一个常量包含在另一个常量中。或者我能吗?@PeeHaa我会的。谢谢。我没有理由为这样的东西创建一个常数。如果需求发生变化,您将不得不进入实际的类来改变这一点。如果语言改变,你基本上没有选择。如果您需要添加更多的测试,那么您的测试也有点卡住了。不,实际的文本应该由专用的翻译对象在此类之外处理。在声明类属性时,您不能连接值。为此使用构造函数。虽然在你的例子中,这两种方法都没有意义。我想为消息设置一个常量,但我不能将一个常量包含在另一个常量中。或者我能吗?@PeeHaa我会的。谢谢。我没有理由为这样的东西创建一个常数。如果需求发生变化,您将不得不进入实际的类来改变这一点。如果语言改变,你基本上没有选择。如果您需要添加更多的测试,您的测试也会有点卡住。不,实际的文本应该在这个类之外由一个专用的翻译对象来处理。@tastro您尝试过我的建议了吗?我现在尝试过了,它可以工作了。非常感谢。但这样做很奇怪。:/OMG在PHP。xDI选择这个答案作为我接受的答案,因为它为我的问题提供了解决方案。但我认为有这个问题的人也应该阅读@Evert answer。很高兴知道为什么会这样。@tastro你试过我的建议了吗?我现在试过了,效果很好。非常感谢。但这样做很奇怪。:/OMG在PHP。xDI选择这个答案作为我接受的答案,因为它为我的问题提供了解决方案。但我认为有这个问题的人也应该阅读@Evert answer。很高兴知道为什么会这样,很高兴知道。PHP 5.5是否有变通方法?因为我现在无法在服务器上升级到
PHP5.6
:(+1我想你已经接受了解决办法;)但是是的。。缺少对这些表达式的支持意味着您需要在构造函数中完成这些工作。我知道我已经接受了解决方法。但知道是否还有其他的做事方式总是好的。如果有更好的解决方案,我总是可以改变我接受的答案很高兴知道。PHP 5.5是否有变通方法?因为我现在无法在服务器上升级到
PHP5.6
:(+1我想你已经接受了解决办法;)但是是的。。缺少对这些表达式的支持意味着您需要在构造函数中完成这些工作。我知道我已经接受了解决方法。但知道是否还有其他的做事方式总是好的。如果有更好的解决方案,我总是可以改变我接受的答案