我有一個對象,並且想要一個返回此對象具有以「bla_」開頭的方法的方法。PHP:從名稱爲「bla_」的對象中獲取所有方法名稱
我發現get_class_method(0函數)至極返回所有方法的名字,但我只想與「bla_」
我有一個對象,並且想要一個返回此對象具有以「bla_」開頭的方法的方法。PHP:從名稱爲「bla_」的對象中獲取所有方法名稱
我發現get_class_method(0函數)至極返回所有方法的名字,但我只想與「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
變量$ object來自哪裏? 其實我想獲取4和5控制器的方法列表。我如何設置'$ object'變量? – 2017-10-17 11:14:14