Cannot use concatenation when declaring default class properties in PHP?

半城伤御伤魂 提交于 2019-12-28 04:31:07

问题


When declaring default values for properties in a PHP class, it appears you can not use concatenation. Is there a reason for this?

class Foo
{
    public $property = __DIR__ . '/';
}

回答1:


For PHP Versions Before 5.6

See http://www.php.net/manual/en/language.oop5.properties.php

They are defined by using one of the keywords public, protected, or private, followed by a normal variable declaration. This declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

For more complex initialisation, use the constructor

public function __construct()
{
    $this->settings = __DIR__ . '/';
}

PHP 5.6 and Above

As of PHP version 5.6, you can use concatenation when declaring default class properties in PHP. See https://wiki.php.net/rfc/const_scalar_exprs.

This allows places that only take static values (const declarations, property declarations, function arguments, etc) to also be able to take static expressions.




回答2:


Your need make all initialisation in __constructor. I.e. in php5. Or in $this->class_name() in oldest php4.



来源:https://stackoverflow.com/questions/5847905/cannot-use-concatenation-when-declaring-default-class-properties-in-php

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!