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.