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__ . '/'; }
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__ . '/'; }
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.1m questions
2.1m answers
60 comments
57.0k users