TALON4 Framework

Dokumentation

Guideline

 

Namespaces

talon4 setzt aufgrund der Abwärtskompatibilität nicht auf eigens definierte Namespaces. Alle Klassennamen sollten den vollständigen Namespace beinhalten.
Modul.Sub.Folder.Classname
Beispiel:

Talon_Core.Controller.Admin
Talon_Core.View.Note.List

Ordern- / Dateistruktur

Projektbeispiel:
App/ beinhaltet den direkten Anwendungscode
talon4 das Framework
public alle öffentlichen Dateien wie CSS, Javascript, bilder
lib Alle Fremd-Bibliotheken für PDF, E-Mails oder Ähnliches
index.php Startdatei
Beispielmodul (in z.B. App/MyModule)
Model/ Alle Datenbank-Klassen
View/ Einzelne Dialoge
Template/ HTML-Vorlagen
Mgr/ "Manager", Verwaltungsklassen die keinem einzelnen Model zuzordnen sind
Controller/ Front-, Ajax oder ähnliche Controller-Klassen

"Model"

Eine Model-Klasse entspricht immer genau einer Datenstruktur ("User","Gruppe","Domain"), muss aber nicht genau 1 Datenquelle haben. Eine Modelklasse kann sich auch aus mehreren Tabellen zusammensetzen.

"Manager"

Manager-Klassen bieten Funktionen, die nicht auf eine einzelne Datenstruktur abgebildet werden. Manager werden eher thematisch benannt.

"View"

Eine View ist ein einzelner Dialog / sichtbarer Funktionsbereich und beinhaltet die exklusiv verbundenen Funktionen ("render","renderList","doSort","hideRecord")
Talon-Views entsprechen am ehesten was MVC als "Controller" bezeichnet.

"(Front-) Controller"

Normale Controller-Klassen sind den Views vorgeschaltet und können sich um Deployment, Rechteprüfungen, allgemeines Layout etc. kümmern.
Damit entsprechen die Controller in talon4 nicht dem MVC Prinzip.

Aufrufreihenfolge

 

index.php >> Dispatcher >> Controller >> View

 

index.php

  • Initialisiert Framework (TF::init, TF::setConfig ...) und Konfigurationen
  • ruft TF.Controller.Dispatch::dispatch auf

Dispatcher

  • (optional) dekodiert URL
  • wählt Controller innerhalb eines Moduls auf
  • ruft MyController::handleView($view) auf

MyController

  • (optional) prüft Zugang, Initialisiert Bibliotheken für XML; JSON-RPC oder ähnliches
  • (empfohlen) Führt zentrale Sicherheitsabfragen aus
  • wählt Dialog aus und initialisiert View-Controller z.B. TF::Get('MyModule.View.MyDefaultView');
  • ruft MyDefaultView::render oder z.B. doAddAction auf.

MyDefaultView

  • Verarbeitet Eingaben und stellt Formulare oder Listen dar, gibt String an den Controller zurück oder manipuliert direkt die Antwort (z.B. bei Downloads, redirects ...)
  • Erzeugt Datenbankabfragen(nach MVC wohl eher ein "View-Controller")