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

标签 php class instance

我是 PHP 新手,所以这个问题看起来很愚蠢,但假设我将变量 ABC 的值分配为 XYZ 类的新对象,那么如何在 XYZ 的类定义中获取名称“ABC”?

$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 类开始,扩展到 Monkey、Elephant、Fish...等。在运行时,我创建了一个 2 层数组,每个数组的元素都是 Monkey、Elephant 或 Fish 类型的实例...

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

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

最佳答案

你不能这样做。如果您想将 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;
  }
}

关于PHP获取类实例的变量名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9496724/

相关文章:

php - 如何在 Laravel 4 中更新字段的列?

java - 有没有像 contains from Java for PHP 这样的函数?

java - 创建对象时重写方法

css - 如果元素选择器变量为真,AngularJS 添加 css 类

java - 为什么 Google 的 Gson 不是静态的?

php - 上传post图片url到mysql数据库,多个url排成一行

php - 对象数组返回相同的值

c++ - 如何使用模板函数初始化类中的静态成员变量

Java:创建 N 个子类实例的 vector

python - 如何从函数中截取实例化的类名?