我希望获得以下变量名称:
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>
答案 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();
每次调用该方法时,它都会给你一个不同的结果。如果你在每个变量上只调用一次,你应该没问题。