2009-12-01 35 views

Trả lời

29

Bạn có thể sử dụng preg_grep() để lọc chúng:

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

Từ nơi biến '$ object' đến? Thực ra tôi muốn lấy danh sách phương thức của 4 và 5 bộ điều khiển. Làm thế nào tôi có thể đặt biến '$ object'? –

5

Hãy thử:

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

Lưu ý rằng === là cần thiết ở đây. == sẽ không hoạt động, vì strpos() trả về false nếu không tìm thấy kết quả phù hợp. Do đánh máy động PHP, số này tương đương với 0 và do đó cần kiểm tra bình đẳng nghiêm ngặt (loại an toàn).

1

Tại sao bạn không chỉ thực hiện chức năng của riêng mình lặp qua mảng từ get_class_methods() và kiểm tra từng phần tử dựa trên "bla_" và trả về một danh sách mới với mỗi giá trị phù hợp?

0

tôi sẽ đề nghị một cái gì đó linh hoạt hơn một chút như thế này (trừ khi tên phương pháp năng động hoặc chưa được biết):

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"; 
} 

đầu ra :

blah_test 
blah_test2 
Các vấn đề liên quan