sınıfındaki tüm genel fonksiyonların bir listesini nasıl duyduğumu duydum get_class_methods()
duydum ama belli bir sınıftaki tüm kamu yöntemlerinin bir dizisini toplamak için PHP'de bir yol var mı?PHP
PHP
cevap
Evet, yansıma sınıflarına/yöntemlerine bir göz atabilirsiniz.
http://php.net/manual/en/book.reflection.php ve http://www.php.net/manual/en/reflectionclass.getmethods.php
$class = new ReflectionClass('Apple');
$methods = $class->getMethods(ReflectionMethod::IS_PUBLIC);
var_dump($methods);
Reflectionmethod örneğinden geçmek yerine statiğin kullanılmasından kaynaklanan basitliği kazıyorum. – Kristian
Bu şekilde denediniz mi?
$class_methods = get_class_methods(new myclass());
foreach ($class_methods as $method_name) {
echo "$method_name\n";
}
Bence Kristian özellikle kamu yöntemleri listelemek için soruyor. – Stegrex
get_class_methods($theClass)
ile tüm yöntemleri aldıktan sonra böyle bir şey ile onların aracılığıyla döngü edebilirsiniz: get_class_methods()
gibi
foreach ($methods as $method) {
$reflect = new ReflectionMethod($theClass, $method);
if ($reflect->isPublic()) {
}
}
kapsamı duyarlıdır, tüm alabilirsiniz Sınıfın dışından işlevi çağıran bir sınıfın genel yöntemleri '
sınıfı (new Foo;
) kapsamında içinden bir çağrı dönecekti iken
array
0 => string 'baz' (length=3)
1 => string '__construct' (length=11)
: Aşağıdaki
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'));
irade çıkışı:
Yani, bu sınıf almak
array
0 => string 'bar' (length=3)
1 => string 'baz' (length=3)
2 => string '__construct' (length=11)
Uhm, 'get_class_methods ($ class)' *, 'get_class_meth 'yi kullanmak istiyorsanız, belirli bir sınıfa ait tüm genel yöntemlerin bir dizisini toplamanın bir yoludur ... –
SADECE SADECE kamu yöntemlerini almak için, sınıf dışında kullanılmalıdır .. – Federkun
get_class_methods ($ class) genel olan ya da anahtar sözcük yok tüm yöntemleri döndürür. Yani herhangi bir özel yöntem iade edilmeyecek – daslicht