PHP nasıl bir değişken sınıfın statik bir yöntem başvuru?

2 Cevap php

Ben verilen parametreye bağlı olarak, farklı türde bir dizi tekil örnekleri dönmek gerekir, bir fabrika sınıfını yazıyorum. Yöntem, böyle bir şey olmazdı, ama ben Singleton'ın statik yöntem başvuran kulüpler yolu açıkça yanlıştır:

public function getService($singletonClassName) {
    return $singletonClassName::getInstance();
}

Böyle bir başvuru için doğru sözdizimi PHP neye benzer?

2 Cevap

PHP

Olasılıklar bir çift, PHP 5.2 ile, olacaktır:


In the first case, it would be as simple as :

ClassName::getInstance()

Ve, ikinci, gibi bir şey kullanmak istiyorum:

call_user_func($singletonClassName .'::getInstance');

According to the documentation of call_user_func , this should work with PHP >= 5.2.3

Yoksa sadece kullanabilirsiniz:

call_user_func(array($singletonClassName, 'getInstance'));

Sadece sınıf adı kullanın

public function getService($singletonClassName) {
    return SingletonClassName::getInstance();
}

Alternatif olarak, eğer $singleClassName classname kullanımını içeren bir değişkendir

public function getService($singletonClassName) {
    return call_user_func( array($singletonClassName, 'getInstance') );
}

5.2.3 itibariyle sen de yapabilirsin

call_user_func($singletonClassName .'::getInstance'); // As of 5.2.3