私がチェックしたいのは、私が作成しているライブラリに静的な関数が存在するかどうかです。私は関数と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エコーを作ることができるようにする必要があります。 $ thisは割り当てられたクラスのため、クラスにアクセスするためのキーワードが 'self'でなければなりません。
なぜtest1()メソッドでは十分ではありませんか? – gapple
これを複数のクラスで拡張されるクラスに入れたいからです。私はこれを達成するために魔法の定数を使用することができますが、より簡単な方法があるはずです。 –