Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
749 views
in Technique[技术] by (71.8m points)

oop - Cannot use concatenation when declaring default class properties in PHP?

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 Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...