PHP

2012-07-20 3 views
11

के सभी सार्वजनिक कार्यों को सूचीबद्ध करने के लिए कैसे करें मैंने get_class_methods() के बारे में सुना है लेकिन क्या किसी विशेष वर्ग से सभी सार्वजनिक तरीकों की एक सरणी एकत्र करने के लिए PHP में कोई तरीका है?PHP

+0

उहम, 'get_class_methods ($ class)' * * किसी विशेष वर्ग के सभी सार्वजनिक तरीकों की एक सरणी एकत्र करने का एक तरीका है ... –

+0

यदि आप 'get_class_meth का उपयोग करना चाहते हैं ओडीएस 'केवल सार्वजनिक तरीकों को पुनर्प्राप्त करने के लिए, इसे कक्षा के बाहर उपयोग करना चाहिए .. – Federkun

+0

get_class_methods ($ class) सभी विधियों को लौटाता है जो या तो सार्वजनिक हैं या उनके पास कोई महत्वपूर्ण शब्द नहीं है। तो किसी भी निजी तरीके को वापस नहीं किया जाएगा – daslicht

उत्तर

20

हाँ आप प्रतिबिंब कक्षाओं/विधियों पर एक नज़र डाल सकते हैं।

http://php.net/manual/en/book.reflection.php और http://www.php.net/manual/en/reflectionclass.getmethods.php

$class = new ReflectionClass('Apple'); 
$methods = $class->getMethods(ReflectionMethod::IS_PUBLIC); 
var_dump($methods); 
+0

मैं सादगी खोद रहा हूं जो प्रतिबिंब विधि के तत्कालता के माध्यम से सांख्यिकी का उपयोग करके होता है – Kristian

1

क्या आपने इस तरह से प्रयास किया है?

$class_methods = get_class_methods(new myclass()); 

foreach ($class_methods as $method_name) { 
    echo "$method_name\n"; 
} 
+2

मुझे लगता है कि क्रिस्टियन विशेष रूप से सार्वजनिक तरीकों की सूची के लिए पूछ रहा है। – Stegrex

7

get_class_methods($theClass) साथ सभी तरीकों मिलने के बाद आप कुछ इस तरह के साथ उन के माध्यम से पाश कर सकते हैं:

foreach ($methods as $method) { 
    $reflect = new ReflectionMethod($theClass, $method); 
    if ($reflect->isPublic()) { 
    } 
} 
8

get_class_methods() के रूप में गुंजाइश के प्रति संवेदनशील है, आप सभी प्राप्त कर सकते हैं कक्षा के सार्वजनिक तरीकों से कक्षा के बाहर से कॉल को कॉल करके:

वर्ग ( new Foo;) के दायरे के अंदर से एक कॉल वापसी होगी जबकि

array 
    0 => string 'baz' (length=3) 
    1 => string '__construct' (length=11) 

:

class Foo { 
    private function bar() { 
     var_dump(get_class_methods($this)); 
    } 

    public function baz() {} 

    public function __construct() { 
     $this->bar(); 
    } 
} 

var_dump(get_class_methods('Foo')); इच्छा उत्पादन निम्नलिखित: ५३६९१३६३२१०

तो, यह वर्ग ले

array 
    0 => string 'bar' (length=3) 
    1 => string 'baz' (length=3) 
    2 => string '__construct' (length=11) 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^