Frage

ich das nicht bekommen: Sie sagen, es ist gut, eine „Basis Controller“ zu machen, der die Datenbank und Sitzung instanziiert:

// Base Controller code
$this->db = Database::instance($db_group);
$this->session = Session::instance();
// Now in any controller which extends Base Controller
$var = $this->session->get('var');
$query = $this->db->query('SELECT * FROM `table`);

So würde ich nur eine Controller-Klasse wie jede andere Controller machen, und dann lassen Sie einfach alle meine anderen „echten“ Controller von diesem erben, so dass sie eine Datenbankverbindung und einer Benutzersitzung haben?

War es hilfreich?

Lösung

In Kohana, ich habe alle meine db Arbeit in meinen Modellen. Sie können das DB-Objekt in dem Modell nur greifen, indem Sie

$this->db

Das Gleiche gilt für viele der anderen Objekte, zum Beispiel $this->uri. Meine Implementierung des MVC-Musters bedeutet, dass alle meine db Arbeit in meinen Modellen ist, ich bin nicht sicher, ob dies der beste Weg ist, es zu tun, aber es funktioniert für mich.

Wie bei Sitzungen, können Sie immer die statischen Methoden verwenden, um eine Singleton wie

zu bekommen
$mySession = Session::instance();

Ich bin mir ziemlich sicher, dass alle / die meisten der Helfer / Bibliotheken haben eine ähnliche Art und Weise der Verwendung von ihnen -. Initiieren sie von $ this- oder die statische Methode

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top