Cannot use concatenation when declaring default class properties in PHP?

前端 未结 2 1883
抹茶落季
抹茶落季 2020-12-04 01:56

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 $pr         


        
相关标签:
2条回答
  • 2020-12-04 02:35

    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.

    0 讨论(0)
  • 2020-12-04 02:37

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

    0 讨论(0)
提交回复
热议问题