Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot use concatenation when declaring default class properties in PHP?

Tags:

oop

php

class

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__ . '/';
}
like image 416
Globalz Avatar asked May 01 '11 10:05

Globalz


1 Answers

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.

like image 133
Phil Avatar answered Sep 19 '22 00:09

Phil