初始化一个类属性

时间:2015-02-23 06:56:48

标签: php class

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

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

但是,这会导致语法错误。我一直在寻找这个问题,但我还没有看到有人试图这样做!

4 个答案:

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