2 Stimmen

Wie kann man in Kohana 3 Modulklassen überschreiben?

Wie kann ich in Kohana 3 eine Modulklasse überschreiben/erweitern?

Ich möchte z.B. dem Auth-Modul eine Funktionalität hinzufügen, die spezifisch für meine Anwendung ist. In diesem Fall möchte ich die abstrakte Auth-Klasse erweitern, die sich im Klassenordner des Auth-Moduls befindet.

Welche Namenskonvention sollte ich für meine Auth-Klasse verwenden und wo im Dateisystem muss ich meine Klassendatei ablegen?

10voto

Luke Punkte 19845

Um dieses Problem zu lösen, ist es wichtig, die hierarchische Natur des Kohana 3 Rahmens zu verstehen. Wenn es darum geht, Module zu überschreiben oder zu erweitern, müssen Sie wie folgt vorgehen.

Erweitern wir das Auth-Modul. Wenn Sie sich die Dateisystemstruktur des Auth-Moduls ansehen, werden Sie feststellen, dass in der classes Verzeichnis gibt es eine Datei namens auth.php . Wenn Sie diese Datei öffnen, sehen Sie Folgendes:

<?php defined('SYSPATH') OR die('No direct access allowed.');

abstract class Auth extends Kohana_Auth { }

Hier eine abstrakte Klasse namens Auth definiert, das die Kohana_Auth Klasse. Wenn Sie Verweise auf die Klasse Auth Klasse in Ihrer Anwendung beziehen Sie sich auf diese abstrakte Klasse. Die eigentliche Implementierung von Auth wird tatsächlich in der Kohana_Auth Klasse, die sich in der Kohana Ordner, der Teil der Modulverzeichnisstruktur ist.

Zur Erweiterung der Auth Modul, d.h. das Hinzufügen Ihrer eigenen Funktionalität, platzieren Sie einfach ein auth.php Datei in der classes Ordner Ihres Anwendungsverzeichnisses. In Ihrem auth.php Datei erweitern Sie Ihre Version der Auth Modul durch Erweiterung des Kohana_Auth Klasse. Zum Beispiel so:

<?php defined('SYSPATH') OR die('No direct access allowed.');

class Auth extends Kohana_Auth {

   public function get_user()
   {
      $result = parent::get_user()

      // implement your functionality here.

      return $result;
   }

   public function my_added_functionality()
   {
   }

}

Aufgrund der hierarchischen Natur des Frameworks ist die abstrakte Klasse Auth die als Teil des Moduls definiert sind, werden nie geladen, da das Framework Ihre Auth Klasse zuerst, weil sie Vorrang hat. Die Klasse, die Sie erweitern, Kohana_Auth bietet alle ursprünglichen Autorisierungsfunktionen, die Sie nicht erweitern und/oder außer Kraft setzen können.

Weitere Informationen zu diesem Verhalten finden Sie unter este Teil der Dokumentation.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X