PHP获取类实例的变量名?

van*_*con 2 php class instance

我是 PHP 新手,所以这个问题似乎很愚蠢,但假设我将变量 ABC 赋值为 XYZ 类的新对象,那么我怎么能在 XYZ 的类定义中获得名称“ABC”?

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

当实例分配给数组的元素时,这是否更容易?

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

所有建议表示赞赏!


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

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

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

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

hsz*_*hsz 5

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

$ABC = new XYZ('ABC');
Run Code Online (Sandbox Code Playgroud)

没有其他方法可以通知类它被分配给的变量。

示例XYZ类:

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

  public echoInstanceName() {
    echo $name;
  }

  public getName() {
    return $this->name;
  }
}
Run Code Online (Sandbox Code Playgroud)