【问题标题】:Calling a class's constant in another class's variable在另一个类的变量中调用一个类的常量
【发布时间】:2011-11-24 09:52:02
【问题描述】:

我想知道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-&gt;anotherClass::$myVariable中的冒号(双点)有关

我不想费尽心思去改变我的其他课程。反正有这个问题吗?

提前感谢您的帮助。

P.S.我只是不想为此浪费几个小时来寻找解决方法。我昨天已经花了 2.5 个小时来更改几乎整个 Jquery,因为客户想要更改,而今天早上我被要求收回更改,因为他们不想使用它(他们改变了主意)。我现在只是想避免大的变化。

【问题讨论】:

    标签: php class variables static constants


    【解决方案1】:

    你需要做的:

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

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

    【讨论】:

    • 我不知道,为什么我没有尝试过这个(:非常感谢您的帮助。需要再等一会儿才能接受您的回答。
    • 我很确定那是still not valid,除非它是 PHP 新手? 编辑: 另外,使用${...} 评估get_class 结果怎么样?
    • @Brad Christie:在 5.3 中有效。
    • @Brad Christie:“评估 get_class 结果”是什么意思?
    • @netcoder:当我认为静态时,我认为引用类的名称,而不是以静态格式实现的类的实例(如 5.3 所示)。我无法让$anotherClass::$myVariable 工作,所以本能地我想使用get_class(基本上模拟“boo::$myVariable”,其中boo 是get_class($classFoo-&gt;anotherClass))但现在我认为没有必要了。长话短说,我试图解决一个我不知道不存在的问题。 ;p
    【解决方案2】:

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

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

    为我工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-06
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 2012-07-29
      相关资源
      最近更新 更多