2009-08-10 4 views
0

Ich habe eine Benutzerklasse mit statischen Methoden getById und getByUsernameWie greife ich auf die statischen Methoden einer benutzerdefinierten Klasse in Kohana zu?

ich die Klasse in der Anwendung haben/Bibliotheken Ordner

Wie rufe ich die Klassen von einem Controller?

Theorie 1:

$this->user = new User(); 
$this->user::getById; 

Theorie 2:

$user = new User(); 
$user::getById; 

oder gibt es eine saubere Art und Weise es viel zu tun, wie, wie Kohana Helfer es tun; ähnlich wie:

text::random(); 

hier ist, was ich accompplish versuche:

Ich möchte von meinem Controller

In PHP eine statische mehthod in der Anwenderbibliothek nennen sind Sie in der Regel die Datei (User.php) und die statischen Methoden sind bereit

Benutzer: getById

aber wie würde ich das gleiche in einem MVC-Framework machen?

soll ich auch eine Aufnahme machen?

Wie include ('User.php') ;?

Antwort

1
User::getById(); 

und

User::getByUserName(); 

bearbeitet: Als Antwort auf Ihre Frage bearbeiten, im allgemeinen Rahmenbedingungen haben einen Auto-Lademechanismus, der eine Klassendatei für Sie finden und laden, sobald Sie diese Klasse verweisen. Wenn Sie also User::getById() eingeben, wird der PHP-Interpreter feststellen, dass er die User-Klasse laden muss (falls er noch nicht geladen wurde) und die Autoloading-Prozedur ausführen, um den richtigen Code zu finden.

Ich habe Kohana nie benutzt, aber ich wäre ziemlich überrascht, wenn es keine Art von Autoloading verwendet hätte. Wenn dies nicht der Fall ist, dann reicht ja ein einfacher include('User.php'), damit die statischen Methodenaufrufe User funktionieren.

+0

das gesagt ist, wie kann ich eine Instanz der Klasse User in einem Konstruktor erstellen? Ich kann es sicherlich nicht mit $ User = new User machen, oder? –

+0

Nein, Sie können keinen neuen Benutzer innerhalb des Konstruktors eines Benutzerobjekts erstellen, andernfalls hätten Sie eine Endlosschleife der Benutzerobjekt-Erstellung.Sie könnten es jedoch in jedem anderen Konstruktor mit '$ user = new User()' erstellen. Was versuchst du zu erreichen? – zombat

0

Die verwirrende Sache ist Kohanas Konvention, "Helfer" -Klassen mit Kleinbuchstaben zu schreiben.

Ihre Benutzer-PHP-Datei wird wahrscheinlich alle bereit sein, wenn Sie es als ein Modell verwenden, so können Sie zombat schlägt von User::getById();.

Ich mag nicht ihre Benennung convensions für Helfer oder Bibliotheken zu folgen und stattdessen tun:

require_once(Kohana::find_file('libraries', 'user_utils', TRUE, 'php')); 
Verwandte Themen