Witam postanowiłem się pobawić troszkę w obiektowe pisanie w php. Efektem moich zabaw ma być malutki framework jeśli tak to można nazwać taki aby zobaczyć jak to działa ;)

Podejrzałem codeigniter i postanowiłem się na nim troszkę wzorować. Dobra przejdę do sedna sprawy.

  1. w index.php odpalam jądro ( Core.php ) w którym zawarta jest klasa Core.
  2. W konstruktorze klasy ładuję Router , klase do bledow i klase Controllera.
  3. Router bada adres itp itd.
  4. Wykonuje sie metoda z klasy Core pod nazwa execute a ona przekierowywuje nas do odpowiedniego pliku z controllerem itp

Takie proste działanie na początek. Teraz przykładowo adres jest example.com/profile/example/cos . Pierwszym parametrem jest tzw. set czyli zestaw w ktorym znajduja sie controllery. Ladujemy klase znajdujacą się w app/sets/profile/Example.php i idziemy do metody cos no i wszystko mi działa. Jednak klasa kontrolera Example dziedziczy po klasie Controller , oto jej kod.

 <?php

class Controller {
    private static $instance;
    public $core;
    public function __construct() {
        self::$instance =& $this;
        $this -> core = Core::getInstance();
        $this -> load =& $this -> core -> load_class('Loader','core');
    }
    
    public static function &getInstance() {
        return self::$instance;
    }
}
?>

a teraz kod klasy Loader którą ładuje w Controller

<?php

class Loader {
    protected $_classes = array();
    
    public function library($library = '' , $params = null ) {
        require_once LIB_PATH.'libraries/'.$library.'.class.php';
        $c =& Controller::getInstance();
        $c -> $library = new $library();
    }
}
?>

Tak chciałbym mniej więcej żeby to działało żebym w controlerze Example mogl zaladowac sobie takim prostym sposobem biblioteke np do obslugi formularzy

 
class ExampleController extends Controller {
    public function indexAction() {
        echo 'Example Controller';
        $this -> load -> library('Form');
        $this -> Form -> zobacz();
    }
}

Moje pytanie brzmi czy dobrym tropem idę ? Czy da się uprościć jakoś klase Controller , ktora potrzebuje dwa razy pobrania instancji , raz swojej a potem z klasy Core. Jesli nie pobierze swojej to mnóstwo błędow. Nie wiem czy dobrze pojmuje cala logike :)
Prosze o pomoc.