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

时间:2014-11-29 15:40:11

标签: php class properties

我试图这样做:

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)通过其他方式更好地实现了吗?

1 个答案:

答案 0 :(得分:3)

您只能在类声明中为类成员分配常量值!

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

<?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


a)有可能看到我的回答/例子
b)为什么这是一个坏主意?这是一个正常的任务,你的财产是私人的,所以其他类不能修改它们!
c)它完全没问题