Witam!
Czy PHP oferuję jakość możliwość przekazywania przez argument klasy której obiekt ma zostać stworzony ? Czy tylko przez argument mogę przekazać obiekt klasy. Dla przykładu, ?
class WebManager
{
$item = null;
public function set(array $param)
{
$ret = null;
if ( (isset($_GET['c'])) || (empty($_GET['c'])) ) {
foreach ($param as $key => $value) {
if($key == $_GET['c']) {
$this->item = new $value; // ?? !!
break;
}
}
if($this->item == null) {
// nieznany parametr get
// load default
$this->item = new Default();
}
} else {
//load deafult
$this->item = new Default();
}
}
}
$web = new WebManager();
$in = array('main'=>'', 'about'=>'', 'contact'=>'');
$web->set($in);
Rozwiązać to mogę za pomocą switch() ale tak się zastanawiam czy jest rozwiązanie pozwalające na dodanie w tym wypadku nowej podstrony dzięki któremu nie będę musiał ingerować w kod tej funkcji a jedynie dodam parametr w tablicy z nazwą oraz jaka to jest klasa.
Po co mi to potrzebne ?
Mam stronę która ma n-podstron każda podstrona osiada swoją klasę w której są dwie funkcje draw z kodem html oraz init <-funkcja ta jest dla klasy głównej która zwraca jakie style/skrypty potrzebuje dana podstrona.
Tutaj pojawia się pytanie: Czy ZBRODNIĄ jest dołączenie wszystkich definicji tych klas w klasie głównej ? Np.
class MainSubPage{...} <- plik main-page.php
class AboutSubWebPage {...} <- plik about.php
class ContactSubPage {...} <- plik contact.php
itd.
I jest osobny plik z klasą główną/zarządzającą który posiada require('subpage/main-page.php'); require('subpage/about.php'); itp. Tylko pojawia się pytanie po co dołączać te pliki skoro i tak zostanie użyty tylko jeden ? Czy to już jest za duże dążenie do pewnego idealizmu ? I Dołączenie poprzez require tylko definicji klas nie jest obciążeniem ani nie spowoduję jakiegoś zapchania serwera ?