オブジェクトがあり、_bla_
_で始まるこのオブジェクトのメソッドの量を返すメソッドが必要です。
すべてのメソッド名を返すget_class_methods()
を見つけましたが、_bla_
_で始まる名前のみが必要です。
preg_grep()
を使用してそれらをフィルタリングできます。
$method_names = preg_grep('/^bla_/', get_class_methods($object));
試してください:
_$methods = array();
foreach (get_class_methods($myObj) as $method) {
if (strpos($method, "bla_") === 0) {
$methods[] = $method;
}
}
_
ここでは_===
_が必要であることに注意してください。 _==
_は機能しません。これは、一致するものが見つからなかった場合、strpos()
がfalse
を返すためです。 PHPの動的型付けにより、これは_0
_に等しいため、厳密な(型安全な)等価性チェックが必要です。
Get_class_methods()から配列をループし、各要素を「bla_」に対してテストし、一致する値ごとに新しいリストを返す独自の関数を作成してみませんか?
私はこのようなもう少し柔軟なものを提案します(メソッド名が動的であるか不明でない限り):
interface ITest
{
function blah_test();
function blah_test2();
}
class Class1 implements ITest
{
function blah_test()
{
}
function blah_test2()
{
}
function somethingelse()
{
}
}
$obj = new Class1();
$methods = array_intersect( get_class_methods($obj), get_class_methods('ITest') );
foreach( $methods as $methodName )
{
echo "$methodName\n";
}
出力:
blah_test
blah_test2