有没有办法从另一个类属性初始化PHP类属性?我有一系列属性,我们希望相互依赖,以便轻松修改根值:
class Anon {
private static $a = 5;
private static $b = '+' . (2 * self::$a);
}
但是,这会导致语法错误。我一直在寻找这个问题,但我还没有看到有人试图这样做!
答案 0 :(得分:3)
您可以使用Init方法初始化静态变量
<?php
class Anon {
private static $a = 5;
private static $b ;
public static function Init(){
self::$b = '+' . (2 * self::$a);
}
public static function getB(){
return self::$b;
}
}
Anon::Init();
echo Anon::getB();
?>
答案 1 :(得分:1)
取决于你如何使用这门课程,但也许这会有所帮助:
class Anon {
private static $a = 5;
private static $b;
function __construct() {
self::$b = '+' . (2 * self::$a);
}
public function getB() {
return self::$b;
}
}
$anon = new Anon;
echo $anon->getB();
答案 2 :(得分:1)
不幸的是,在加载类时,PHP无法解析非平凡的表达式 以下是初始化静态成员的解决方案
class Anon {
private static $a;
private static $b;
public static function init () {
self::$a = 5;
self::$b = '+' . (2 * self::$a);
}
}
Anon::init();
答案 3 :(得分:1)
您无法直接访问私有类属性。你可以公开。
class Anon {
public static $a = 5;
}
print Anon::$a;
或使用其他示例的公共函数来访问$b
;
class Anon {
private static $a = 5;
private static $b;
public static function init() {
return self::$b = '+' . (2 * self::$a);
}
}
echo Anon::init();