Ответ 1
Вы можете использовать preg_grep()
, чтобы отфильтровать их:
$method_names = preg_grep('/^bla_/', get_class_methods($object));
У меня есть объект и я хочу, чтобы метод возвращал, как много метода этот объект начинает с "bla _".
Я нашел get_class_methods(), который возвращает все имена методов, но мне нужны только имена, начинающиеся с "bla _"
Вы можете использовать preg_grep()
, чтобы отфильтровать их:
$method_names = preg_grep('/^bla_/', get_class_methods($object));
Try:
$methods = array();
foreach (get_class_methods($myObj) as $method) {
if (strpos($method, "bla_") === 0) {
$methods[] = $method;
}
}
Обратите внимание, что здесь требуется ===
. ==
не будет работать, поскольку strpos()
возвращает false
, если совпадение не найдено. Из-за динамической типизации PHP это равно 0
, и поэтому необходима строгая проверка типа (типа).
Почему бы вам просто не сделать свою собственную функцию, которая проходит через массив из get_class_methods() и проверяет каждый элемент на "bla_" и возвращает новый список с каждым подходящим значением?
Я бы предложил нечто более гибкое, например this (если имена методов не являются динамическими или неизвестны):
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