我是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的名字。当然我可以以某种方式将数组的键传递给实例,但我想避免键入两次。 (当我改变一个名字时,这会导致错误)
这是不可能的吗?或者你能否建议一个更好的模式?谢谢!
答案 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;
}
}