【问题标题】:OOPHP: Reference one static property in anotherOOPHP:在另一个中引用一个静态属性
【发布时间】:2014-11-29 15:40:11
【问题描述】:

我正在尝试这样做:

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

【问题讨论】:

  • 从 5.6 开始,您可以在声明中使用一些简单的表达式,但我不清楚您的确切方案是否可行(我无法访问 5.6 进行测试)wiki.php.net/rfc/const_scalar_exprs

标签: php class properties


【解决方案1】:

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

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

<?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) 完全没问题

【讨论】:

  • 而不是init(),只需使用__construct()
猜你喜欢
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 2015-04-04
  • 2013-02-11
相关资源
最近更新 更多