【发布时间】:2010-11-12 11:57:12
【问题描述】:
我想检查我正在创建的库中是否存在一个函数,该函数是静态的。我见过 function 和 method_exists,但还没有找到允许我在相对上下文中调用它们的方法。这是一个更好的例子:
class myClass{
function test1()
{
if(method_exists("myClass", "test1"))
{
echo "Hi";
}
}
function test2()
{
if(method_exists($this, "test2"))
{
echo "Hi";
}
}
function test3()
{
if(method_exists(self, "test3"))
{
echo "Hi";
}
}
}
// Echos Hi
myClass::test1();
// Trys to use 'self' as a string instead of a constant
myClass::test3();
// Echos Hi
$obj = new myClass;
$obj->test2();
如果函数存在,我需要能够使测试 3 回显 Hi,而无需将其从静态上下文中取出。鉴于访问类的关键字应该是“self”,因为 $this 用于分配的类。
【问题讨论】:
-
为什么 test1() 方法不够用?
-
因为我想把它放到一个类中,该类将被多个类扩展。我可以使用魔法常数来实现这一点,但应该有更简单的方法。