在另一个类的变量中调用类的常量

时间:2011-09-24 21:09:24

标签: php class variables static constants

我想知道PHP中是否有可能做以下事情;

<?php

class boo {
 static public $myVariable;

 public function __construct ($variable) {
   self::$myVariable = $variable;
 }
}

class foo {
  public $firstVar;
  public $secondVar;
  public $anotherClass;

 public function __construct($configArray) {
   $this->firstVar = $configArray['firstVal'];
   $this->secondVar= $configArray['secondVar'];
   $this->anotherClass= new boo($configArray['thirdVal']);
 }
}

$classFoo = new foo (array('firstVal'=>'1st Value', 'secondVar'=>'2nd Value', 'thirdVal'=>'Hello World',));

echo $classFoo->anotherClass::$myVariable;
?>

预期的输出: Hello World

我收到了以下错误; Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM

我用Google搜索,它与$classFoo->anotherClass::$myVariable

中的冒号(双点)相关

我不想全神贯顺地改变我的其他课程。反正有这个问题吗?

提前感谢您的帮助。

P.S。我只是不想在这方面浪费几个小时才找到方法。我已经花了2.5个小时来改变几乎整个Jquery,因为客户想要改变,今天早上我被要求接受更改,因为他们不想使用它(他们改变主意)。我现在只是想避免重大改变。

2 个答案:

答案 0 :(得分:11)

你需要这样做:

$anotherClass = $classFoo->anotherClass;
echo $anotherClass::$myVariable;

不支持将表达式扩展为静态调用/常量的类名/对象(但扩展变量,如上所示)。

答案 1 :(得分:0)

如果您不关心内存和执行速度,这是正确的 似乎参考会更好:

$classRef = &$classFoo->anotherClass;
echo $classRef;

适合我。