我正在尝试访问静态类变量定义中的静态类方法。我尝试过几次,但无法编译代码。
天真尝试:
<?php
class TestClass {
private static $VAR = doSomething(array());
private static function doSomething($input) {
return null;
}
}
?>错误:
dev@box:~/php$ php -l TestClass.php
PHP Parse error: syntax error, unexpected '(', expecting ',' or ';' in TestClass.php on line 3
Errors parsing TestClass.php直觉尝试:
<?php
class TestClass {
private static $VAR = self::doSomething(array());
private static function doSomething($input) {
return null;
}
}
?>错误:
dev@box:~/php$ php -l TestClass.php
PHP Parse error: syntax error, unexpected '(', expecting ',' or ';' in TestClass.php on line 3
Errors parsing TestClass.php逻辑尝试:
<?php
class TestClass {
private static $VAR = static::doSomething(array());
private static function doSomething($input) {
return null;
}
}
?>错误:
dev@box:~/php$ php -l TestClass.php
PHP Fatal error: "static::" is not allowed in compile-time constants in TestClass.php on line 3
Errors parsing TestClass.php绝望的尝试:
<?php
class TestClass {
private static $VAR = $this->doSomething(array());
private static function doSomething($input) {
return null;
}
}
?>错误:
dev@Dev08:~/php$ php -l TestClass.php
PHP Parse error: syntax error, unexpected '$this' (T_VARIABLE) in TestClass.php on line 3
Errors parsing TestClass.php任务看起来很简单,使用静态方法来定义静态变量,但是我不知道如何在静态变量声明的上下文中正确地访问静态方法。
如何在PHP v5.5.3__中的静态变量定义中调用静态方法?
发布于 2014-02-28 18:35:23
正确尝试:
<?php
class TestClass {
private static $VAR = null;
private static function doSomething($input) {
return null;
}
public static function Construct(){
self::$VAR = self::doSomething(array());
}
}
TestClass::Construct();
?>可以将静态初始化为标量和数组。不能用函数调用初始化它。因此,您需要一个公共方法,如果您需要私有的东西,可以调用它来初始化静力学。
如果他们是公开的,你可以:
TestClass::$VAR = TestClass::doSomething(array());就在类声明之后或者要实例化它的时候。
证明
与任何其他PHP静态变量一样,静态属性只能使用文字或常量进行初始化;表达式不允许。因此,虽然可以将静态属性初始化为整数或数组(例如),但不能将其初始化为另一个变量、函数返回值或对象。来自PHP.net/静态
https://stackoverflow.com/questions/22103052
复制相似问题