php获取类的名称
有没有办法让一个在另一个内部调用的类知道外部类的名称 例如:php获取类的名称,php,oop,Php,Oop,有没有办法让一个在另一个内部调用的类知道外部类的名称 例如: class A{ // need to get the name of B // some stuff } class B{ $var = new A; } 因为B不是a的孩子,所以不能做这项工作 有什么建议吗 编辑:对不起,各位,我不得不改变问题。我想问的是,类A能否知道调用它的类的名称。再次为愚蠢的第一个问题感到抱歉。你想要什么 get_class-返回对象类的名称 编辑 正如戈登所说,这是不可能的。您可能能够解析
class A{
// need to get the name of B
// some stuff
}
class B{
$var = new A;
}
因为B不是a的孩子,所以不能做这项工作
有什么建议吗
编辑:对不起,各位,我不得不改变问题。我想问的是,类A能否知道调用它的类的名称。再次为愚蠢的第一个问题感到抱歉。你想要什么
get_class-返回对象类的名称
编辑
正如戈登所说,这是不可能的。您可能能够解析调用堆栈以查看您所在的类调用了哪个类,但我不会这样做。不,这是不可能的
嗯,差不多了。您可以从或黑客攻击到调用类,但这是相当低效和缓慢的。有许多函数可以帮助您实现这一点,但所有这些都不是您想要的生产代码
最简单的方法是将B的实例传递给A,例如
class A {
protected $callerInstance;
protected $callerClassName
public function __construct($caller) {
$this->callerInstance = $caller;
$this->callerClassName = get_class($caller);
}
}
如果您将类B的名称传递给类A构造函数,这是可能的。这需要在类a和所有需要它的类中进行修改。老练,但做你需要的
class A{
function __construct($caller){
echo $caller; // will echo B, C and D respectively
}
}
class B{
$var = new A(get_class($this));
}
class C{
$var = new A(get_class($this));
}
class D{
$var = new A(get_class($this));
}
我完全同意你的看法。不明白为什么人们会投反对票。+1感谢正确阅读问题并获得正确答案。再次感谢您指出问题中的错误我应该为此得到一枚徽章:因为对你试图做什么似乎有些困惑,请改进这个问题。
class A{
function __construct($caller){
echo $caller; // will echo B, C and D respectively
}
}
class B{
$var = new A(get_class($this));
}
class C{
$var = new A(get_class($this));
}
class D{
$var = new A(get_class($this));
}