Mam klasy z funkcją fabrycznie wzorca w nim:instancji klasy dziecko od klasy nadrzędnej (PHP)
abstract class ParentObj {
public function __construct(){ ... }
public static function factory(){
//returns new instance
}
}
muszę dzieci, aby móc wywołać funkcję fabryki i powrócić instancję powołania klasa: $child = Child::factory();
i najlepiej bez nadpisywania funkcji fabrycznej w klasie potomnej.
Próbowałem różnych sposobów osiągnięcia tego bez skutku. Wolałbym trzymać się z daleka od rozwiązań wykorzystujących odbicie, takich jak __CLASS__
.
(używam PHP 5.2.5 jeśli ma to znaczenie)
gram z RC4 na minutę więc spróbuję trochę kodu wkrótce, jeśli nikt inny nie podchodzi w międzyczasie ... –
LSB wydaje być najlepszym rozwiązaniem, które mogę znaleźć na własną rękę. Do czasu aktualizacji, najlepsze, co mogę wymyślić, to przekazać nazwę dziecka do fabryki() lub zdefiniować nazwę jako właściwość i pobrać ją z fabryki() –
Zgodnie z podręcznikiem PHP, istnieje funkcja o nazwie ' get_called_class() 'działa jak' __CLASS__' http://us.php.net/manual/en/function.get-called-class.php –