- SearchInterface (Tak naprawdę to Singleton + jedna funkcja do obsługi błędów jak narazie)
- GoogleSearch
- RapidMegaSearch
Oto testowe zastosowanie:
<?php $GoogleSearch = GoogleSearch::getInstance('GoogleSearch'); $GoogleSearch -> Query($Query, 1); $GoogleSearch -> ParseResults(); $GoogleResults = $GoogleSearch -> Results(); $Search = RapidMegaSearch::getInstance('RapidMegaSearch'); ?>
Klasa SearchInterface:
<?php abstract class SearchInterface { protected $ErrorLevel; private function __construct() {} private function __clone(){} { if (self::$instance === null) { self::$instance = new $Classname(); } return self::$instance; } protected function FailOnScreen ($inMsg='Unknown', $inFunction='Not specified', $inCondition='Unknown', $inErrorNumber) { if($this->ErrorLevel == 'exception') { throw new Exception ('TestXY triggered an error. Message says "' . $inMsg . '", triggered from function "' . $inFunction . '" by condition "' .$inCondition. '".', $inErrorNumber); } elseif ($this->ErrorLevel == 'trigger') { trigger_error('TestXY error. Message says "' . $inMsg . '", triggered from function "' . $inFunction . '" by condition "' .$inCondition. '", error number: ' .$inErrorNumber, E_USER_WARNING); } } } ?>
OBIE KLASY (GoogleSearch i RapidMegaSearch) DZIEDZICZĄ po SearchInterface, ale kiedy utworzę instancję klasy GoogleSearch, to przy tworzeniu instancji klasy SearchInterface instancja nie jest tworzona instancja klasy SearchInterface tylko zwracana jest GoogleSearch...
Jeśli nie rozumiesz powyższego zdania, oto rysunek pomocniczy


W klasie SearchInterface umieściłem:
<?php ?>
I zwraca dla przykładu podanego wyżej:
Cytat
dla GoogleSearch
GoogleSearch dla RapidMegaSearch
GoogleSearch dla RapidMegaSearch
Jak widać:
- Tworzona jest instancja GoogleSearch
- Przy próbie dostępu do nie istniejącej jeszcze instancji klasy RapidMegaSearch zwracana jest instancja klasy GoogleSearch.
Moje pytanie:
- Jak to wszystko naprawić? Chcę aby każda klasa zwracała Swoją instnację - czyli tak jak powinno być...
Pozdrawiam, WebNuLL