【问题标题】:Cannot use concatenation when declaring default class properties in PHP?在 PHP 中声明默认类属性时不能使用连接?
【发布时间】:2011-05-01 10:49:37
【问题描述】:

在 PHP 类中声明属性的默认值时,您似乎不能使用串联。这是有原因的吗?

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

【问题讨论】:

    标签: php oop class


    【解决方案1】:

    对于 PHP 5.6 之前的版本

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

    它们是通过使用关键字 public、protected 或 private 之一来定义的,然后是一个普通的变量声明。此声明可能包含一个初始化,但此初始化必须是一个常量值——也就是说,它必须能够在编译时进行评估,并且不能依赖运行时信息才能进行评估。

    对于更复杂的初始化,使用构造函数

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

    PHP 5.6 及更高版本

    从 PHP 5.6 版开始,您可以在 PHP 中声明默认类属性时使用串联。见https://wiki.php.net/rfc/const_scalar_exprs

    这允许只接受静态值(const 声明、属性声明、函数参数等)的地方也能够接受静态表达式。

    【讨论】:

      【解决方案2】:

      您需要在 __constructor 中进行所有初始化。 IE。在 php5. 或者在最旧的 php4 中的 $this->class_name() 中。

      【讨论】:

        猜你喜欢
        • 2014-10-22
        • 2015-03-04
        • 2021-08-11
        • 2012-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-30
        相关资源
        最近更新 更多