I have an object and want a method that returns how much method this Object have that start with "bla_".
I found get_class_methods() wich returns all method names, but I only want names which starts with "bla_"
I have an object and want a method that returns how much method this Object have that start with "bla_".
I found get_class_methods() wich returns all method names, but I only want names which starts with "bla_"
Try:
$methods = array();
foreach (get_class_methods($myObj) as $method) {
if (strpos($method, "bla_") === 0) {
$methods[] = $method;
}
}
Note that ===
is necessary here. ==
won't work, since strpos()
returns false
if no match was found. Due to PHPs dynamic typing this is equal to 0
and therefore a strict (type safe) equality check is needed.
Why don't you just make your own function that loops through the array from get_class_methods() and tests each element against "bla_" and returns a new list with each matching value?
You can use preg_grep()
to filter them:
$method_names = preg_grep('/^bla_/', get_class_methods($object));
I would suggest something a bit more flexible such as this (unless the method names are dynamic or are unknown):
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";
}
Outputs:
blah_test
blah_test2