初始化一个class属性

Initialize a class property

有没有办法从另一个 class 属性 初始化一个 PHP class 属性?我有一系列属性,我想相互依赖以便轻松修改根值:

class Anon {
    private static $a = 5;
    private static $b = '+' . (2 * self::$a);
}

但是,这会导致语法错误。我在搜索这个时遇到了麻烦,但我还没有看到有人尝试这样做!

取决于您如何使用 class,但也许这会有所帮助:

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();

不幸的是,PHP 在加载 class 时无法解析非平凡表达式
这是初始化静态成员的解决方案

    class Anon {
      private static $a;
      private static $b;

    public static function init () {
        self::$a = 5;
        self::$b = '+' . (2 * self::$a);
    }
   }

Anon::init();

您可以使用 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();
    ?>

您无法直接访问私有 class 属性。不过,您可以使用 public。

class Anon {
    public static $a = 5;
}

print Anon::$a;

或像其他示例一样使用 public 函数来访问 $b;

class Anon {

    private static $a = 5;
    private static $b;

    public static function init() {
        return self::$b = '+' . (2 * self::$a);
    }
}

echo Anon::init();