gpt4 book ai didi

php - 使用抽象类或特征获取对象的命名空间?

转载 作者:可可西里 更新时间:2023-11-01 00:08:50 27 4
gpt4 key购买 nike

我有一些代码如下:

namespace {
trait ns{
public function get_ns(){
var_dump(__NAMESPACE__);
}
}
}

namespace a{
class obj{
use \ns;
}
}

namespace b{
class obj{
use \ns;
}
}

namespace {
$a = new a\obj;
$b = new b\obj;

$a->get_ns();
$b->get_ns();
}

$a->get_ns();$b->get_ns(); 转储 string(0) "" string(1) "a"string(1) "b"。如果我使用抽象类而不是特征,行为是相同的。

这(显然)是因为特征/抽象类是在普通命名空间中声明的,但是我希望特征/抽象类转储实际对象(a 和 b)的命名空间。

有没有什么方法可以在不在每个对象中创建这个函数并且不将 __NAMESPACE__ 作为参数传递给 get_ns() 的情况下做到这一点?

最佳答案

使用 reflection api :

var_dump((new \ReflectionObject($this))->getNamespaceName());

这就是它的用途。

关于php - 使用抽象类或特征获取对象的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28182783/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com