如何存储构造的变量名

时间:2011-10-14 09:07:41

标签: php html

我希望获得以下变量名称:

class ClassA
{
    public $my_name_is = "";
    function __construct($tag,$cont = null)
    {
        $this->my_name_is = ???;
    }
}
$OBJ = new ClassA();
echo($OBJ->my_name_is);

这应输出

OBJ

有可能吗?

我制作标签HTML生成器,标签的id应该是对象名称,所以我不能写两次:

$input_pwd = new tag("td>input TYPE=PASSWORD.box_lg#input_pwd"); //old way
$input_pwd = new tag("td>input TYPE=PASSWORD.box_lg"); //upgraded way

应该生成:

<td><input TYPE=PASSWORD ID='input_pwd' CLASS='box_lg'></td>

3 个答案:

答案 0 :(得分:2)

不,不是。对象不知道引用它的变量的名称。

“需要”这通常是一个设计缺陷。

答案 1 :(得分:1)

您可以使用魔术常量__CLASS__来检索当前类的名称,但是类无法获取存储该类的变量的名称。您可能希望扩展您的课程并仍然使用__CLASS__

class OBJ extends ClassA {
    public function getName() {
        return __CLASS__;
    }
}
$OBJ = new OBJ();
$OBJ->getName();

另请参阅:http://php.net/manual/en/language.constants.predefined.php

答案 2 :(得分:0)

如果您只是想确保每个对象的引用都有唯一的ID,那么您可以使用静态变量。

class ClassA {
    public function getUniqueName() {
        static $count = 0;
        ++$count;
        return __CLASS__ . '.' . $count;
    }
}
$OBJ = new ClassA();
echo($OBJ->getUniqueName();

每次调用该方法时,它都会给你一个不同的结果。如果你在每个变量上只调用一次,你应该没问题。