2009-12-01 10 views

Respuesta

29

Puede utilizar preg_grep() filtrarlos:

$method_names = preg_grep('/^bla_/', get_class_methods($object)); 
+0

¿De dónde viene la variable '$ object'? En realidad quiero obtener la lista de método de 4 y 5 controladores. ¿Cómo puedo configurar la variable '$ object'? –

5

Probar:

$methods = array(); 
foreach (get_class_methods($myObj) as $method) { 
    if (strpos($method, "bla_") === 0) { 
     $methods[] = $method; 
    } 
} 

Tenga en cuenta que === es necesario en este caso. == no funcionará, ya que los rendimientos strpos()false si se encuentra ninguna coincidencia. Debido a tipado dinámico PHPS esto es igual a 0 y por lo tanto es necesaria una estricta (tipo seguro) de verificación de la igualdad.

1

¿Por qué no acaba de hacer su propia función que recorre la matriz de get_class_methods() y prueba cada elemento contra "bla_" y devuelve una nueva lista con cada valor coincidente?

0

Yo sugeriría algo un poco más flexible como este (a menos que los nombres de los métodos son dinámicos o son 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 
Cuestiones relacionadas