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我想你已经接受了解决办法;)但是是的。。缺少对这些表达式的支持意味着您需要在构造函数中完成这些工作。我知道我已经接受了解决方法。但知道是否还有其他的做事方式总是好的。如果有更好的解决方案,我总是可以改变我接受的答案