PHP: sınıf örneği olarak değişken adı

2 Cevap php

Hey guys, Im having a problem with using a variable as the class name when calling a static function within the class. My code is as follows:

class test {
     static function getInstance() {
         return new test();
     }
}

$className = "test";
$test = $className::getInstance();

Ive sınıfın adı veritabanından geliyor gibi bu yüzden bir örneğini oluşturmak için hangi sınıf bilmek asla bir değişkene sınıf adını tanımlamak lazım.

Not: Şu anda ben aşağıdaki hatayı alıyorum:

Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM 

Teşekkürler

2 Cevap

$test = call_user_func(array($className, 'getInstance'));

call_user_func ve callbacks bakın.

: Sen reflection API, size böyle bir şey yapalım olur kullanabilirsiniz

$className = 'Test';
$reflector = new ReflectionClass($className);
$method = $reflector->getMethod('getInstance');
$instance = $method->invoke(null);

hatta:

$className = 'Test';
$reflector = new ReflectionClass($className);
$instance = $reflector->newInstance(); 
// or $instance = $reflector->newInstanceArgs([array]);
// or $instance = $reflector->newInstanceWithoutConstructor();

Her ikisi de sadece bir sınıf adı olarak doğrudan bir dize değerini yorumlamak veya call_user_func ve arkadaşlarını kullanarak daha benim için çok temiz görünüyor.