OOPHP:在另一个静态属性中引用一个静态属性


OOPHP: Reference one static property in another

我正在尝试这样做:

Class foo {
    private static $foo = 'some val';
    private static $bar = self::$foo.'!';
}

。但显然你不能这样做:

Parse error: syntax error, unexpected '$foo' (T_VARIABLE) in {file} on line {line}

这是:a)不可能吗?b) 出于某种原因的坏主意;c) 通过其他方式更好地实现?

您只能在类声明中为类成员赋值!

因此,要解决您的问题,您必须在函数或构造函数中分配一个值,并在函数中访问它,因为它是私有的!

<?php
    Class foo {
        private static $foo = 'some val';
        private static $bar = null;
        public function __construct() {
            $this->init();
        }

        public static function init() {
            self::$bar = self::$foo . '!';
        }
        public static function getBar() {
            echo self::$bar;
        }
    }
    $obj = new foo();
    echo $obj->getBar();

?>

输出:

some val!

欲了解更多信息,请看这里:

http://php.net/manual/en/language.oop5.static.php

http://php.net/manual/en/language.oop5.visibility.php

一)可以看到我的答案/示例b)为什么这应该是一个坏主意?这是一个正常的作业,你把你的财产设为私有,这样其他类就不能修改它们!c)而且完全没问题