PHP获取变量的类实例名称?

时间:2012-02-29 09:42:16

标签: php class instance

我是PHP的新手所以这个问题看起来很愚蠢,但是假设我将值变量ABC赋值为XYZ类的新对象,那么我怎样才能在XYZ的类定义中得到名称“ABC”? / p>

$ABC = new XYZ;
$ABC->echoInstanceName(); //--I wish this line could echo out : ABC

将实例分配给数组的元素时,这会更容易吗?

$ABC = array('myElem'=>new XYZ);
$ABC['myElem']->echoInstanceName(); //--I wish this line could echo out : ABC

所有建议都赞赏!


更多信息:我正在做一件事:建立一个动物系统。

开始使用类nativeAnimal&扩展到猴子,大象,鱼......等。在运行时,我创建了一个2层数组,每个数组的元素都是Monkey,Elephant或Fish类型的实例......

我希望数组的键是动物的名字。在Monkey类中,我想要一个函数来回应Monkey的名字。当然我可以以某种方式将数组的键传递给实例,但我想避免键入两次。 (当我改变一个名字时,这会导致错误)

这是不可能的吗?或者你能否建议一个更好的模式?谢谢!

1 个答案:

答案 0 :(得分:4)

你不能这样做。如果要将ABC值传递给XYZ类,请在构造函数中使用额外的参数:

$ABC = new XYZ('ABC');

没有其他方法可以告知类有关它所分配的变量。

示例XYZ类:

class XYZ {
  protected $name;
  public __construct($name) {
    $this->name = $name;
  }

  public echoInstanceName() {
    echo $name;
  }

  public getName() {
    return $this->name;
  }
}