objetos - PHP: obtenga todos los nombres de métodos de un objeto con el nombre "bla_"
php oop (4)
Tengo un objeto y quiero un método que devuelva la cantidad de método que tiene este objeto que comienza con "bla_".
Encontré get_class_methods () que devuelve todos los nombres de métodos, pero solo quiero nombres que comiencen con "bla_"
¿Por qué no solo crea su propia función que recorre la matriz desde get_class_methods () y prueba cada elemento con "bla_" y devuelve una nueva lista con cada valor coincidente?
Sugeriría algo un poco más flexible como este (a menos que los nombres de los métodos sean dinámicos o desconocidos):
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";
}
Salidas:
blah_test
blah_test2
Tratar:
$methods = array();
foreach (get_class_methods($myObj) as $method) {
if (strpos($method, "bla_") === 0) {
$methods[] = $method;
}
}
Tenga en cuenta que ===
es necesario aquí. ==
no funcionará, ya que strpos()
devuelve false
si no se encontró ninguna coincidencia. Debido a la escritura dinámica de PHP, esto es igual a 0
y, por lo tanto, se necesita una verificación de igualdad estricta (de tipo seguro).
Puedes usar preg_grep()
para filtrarlos:
$method_names = preg_grep(''/^bla_/'', get_class_methods($object));