Web
abstract class Web extends Assembly
Implementierung einer Web-Anwendung
Diese Klasse kapselt alle Informationen und Methoden einer Webanwendung. Die Klasse ist abstrakt und muss von einer konkreten Anwendung überschrieben werden.
Constants
UUID |
Default UUID dieser Klasse |
DEFAULTSTORAGEHANDLER |
Klassenname des Default-Handlers |
LOCATIONS_CLASS |
Klasse in der die Locations definiert sind Diese Konstante kann von abgeleiteten Klassen überschrieben werden. |
DEFAULTSTORAGEINDEXHANDLER |
Klassenname des Default-Handlers dex Indexers |
DEFAULT_NAME |
Name der Default-Konfigurationsdatei |
PLACEHOLDER_CONFIGPATH |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
PLACEHOLDER_DEFAULTPATH |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
PLACEHOLDER_ASSETSPATH |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
PLACEHOLDER_BASEPATH |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
PLACEHOLDER_LICENCEPATH |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
PLACEHOLDER_DATAPATH |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
PLACEHOLDER_CUSTOMISATIONPATH |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
PLACEHOLDER_REPOSITORYPATH |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
PLACEHOLDER_VENDORPATH |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
PLACEHOLDER_RESOURCEPATH |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
PLACEHOLDER_LOGPATH |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
PLACEHOLDER_TEMPPATH |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
PLACEHOLDER_APPLICATIONID |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
PLACEHOLDER_LANGUAGE |
Mapping der Methode Alvine\Application\Assembly::getPlaceholderMap |
Properties
protected Facility | $facility | from Assembly | |
protected Node | $configuration | from Assembly | |
static protected ObjectMap | $instance | Einzige Objektinstanz (singelton) der Anwendung | from Assembly |
protected Locations | $locations | from Assembly | |
static protected CacheManager | $cacheManager | from Assembly | |
protected View | $view | from Assembly | |
protected Examiner | $cacheExaminer | from Assembly | |
protected EventQueue> | $volatileEventQueues | from Assembly | |
protected Locale | $locale | from Assembly | |
protected Manager | $storageManager | from Assembly | |
protected SMTPClient | $defaultSmtpClient | from Assembly | |
protected Session | $session | ||
protected Request | $request | ||
protected Route | $router | ||
protected Identity | $identity | ||
protected Authority> | $authorities | ||
protected Cookie> | $cookies | ||
protected string | $requestID |
Methods
Anwendung beenden
Eventqueue für Event holen und wenn noch nicht vorhanden anlegen
Instanz ermitteln. Wird keine Instanzklasse angegeben, so wird das aktuelle Objekt in der Instanz-Map verwendet.
Instanzprüfung erweitern
Standardplatzhalter der Anwendung
Standardplatzhalter der Anwendung
Neue Instanz
Diese Methode liest einen Konfigurationswert aus.
Instanz des Storage-Manager holen und Referenz in der Anwendung speichern
Ein Storageobjekt registrieren.
Handler für den entsprechenden Speichertyp
Diese Methode berechnet einen eindeutigen Wert für eine Anwendung. Da jede Anwendung nur eine Instanz haben kann, muss dieser Wert nur zu Klasse hin eindeutig sein.
Versuchen die Lokale über den Header zu setzen
Versuchen die Lokale über den Request zu setzen
Locale initialisieren
Versuchen die Lokale über ein Cookie zu setzen
Lokale initialisieren
ID des aktuellen Aufrufs (wird von Ignition initialisiert)
Router initialisieren
Request
Request initialisieren
Überprüfen des Benutzernamens und des Passwortes
Identität aus Request ermitteln. Es wird nach den POST-Variablen username und password gesucht. Akternativ können diese in der Konfiguration mittels der Eigenschaften
Identität aus dem Body holen
Authentifiaction von WWW-Authentification
Diese Methode liest entweder aus der Session oder aus der POST-Variable username den Namen der angefragten Identität aus.
Authority
Authorities
Autorität initialisieren
Diese Methode wird im Rahmen der Task-Bearbeitung (wenn nicht anders konfiguriert) aufgerufen und übergibt den Request an die im Routing definierten Presenter.
Ausführen eines Routings
Identität der Anwendung
Prüft ob im Request eine Session gesetzt ist.
Session Definition
Session
Lädt eine Session oder erstellt diese neu. Der Name der Klasse und der Name des Cookies, in dem die Session-ID gespeichert wird, kann über die Konfiguration gesteuert werden.
Diese interne Methode wird von Web::initSession() aufgerufen und lädt eine Session aus dem gegebenen Storagesystem. Für andere Storagesysteme muss diese Methode überschrieben werden.
Session schreiben. Für andere Storagesysteme muss diese Methode überschrieben werden.
Details
at line 104
protected
__construct(Facility $facility)
Neues Anwendugs-Objekt erstellen.
Der Konstruktor erstellt ein neues Objekt und initialisiert die Systeminstanzen für Environment, Encoding, System und Math. Außerdem wird der Anwendung ein SystemLogger und ein Mailserver zugewiesen.
at line 115
__destruct()
Anwendung beenden
in Assembly at line 284
protected EventQueue
getEventQueue(Event $class)
Eventqueue für Event holen und wenn noch nicht vorhanden anlegen
in Assembly at line 307
Assembly
subscribeEvent(Subscriber $subscriber, string $eventClass)
Event abonnieren
in Assembly at line 320
Assembly
unsubscribeEvent(Subscriber $subscriber, string $eventClass)
Abmelden
in Assembly at line 342
bool
shouldBeCached()
Soll die Anwendung cachen
in Assembly at line 351
Locale
getLocale()
Lokale der Anwendung
in Assembly at line 386
static Assembly
execute(Facility $facility)
Programm ausführen
Die execute-Methode sucht nach der gewünschten Anwendung, erstellt ein Objekt der Anwendung, initiert dadurch die Konfiguration und ruft im Anschluß den Taskhandler auf.
Über die optinalen Parameter $namespace und $path können im ersten Aufruf die Anwendungsklassen inititalisiert werden. Bei weiteren Aufrufen, muss dies nicht mehr erfolgen. Der Namespace kann aber auch normal im AutoLoader registriert werden.
Der Task-Handler sorgt dafür, das die in der Konfiguration aufgeführten Task der Reihe nach ausgeführt werden. Durch die Flexibilität der Tasks, können in der konkreten Anwendung unterschiedliche Szenarien implementiert werden.
application.task=init
application.task=render
Über den Anwendungsmodus können bestimmte Regeln definiert werden. So wird der Anwendungscache nur im Produktivsystem aktiviert.
in Assembly at line 467
static protected Assembly
checkCompatibility(Throwable $e)
Prüpft ob die Kompatibilität eingehalten wurde.
in Assembly at line 507
static Assembly|null
getInstance(string $assemblyClass = null)
Instanz ermitteln. Wird keine Instanzklasse angegeben, so wird das aktuelle Objekt in der Instanz-Map verwendet.
Wird kein Assembly gefunden, so wird null zurückgegeben.
in Assembly at line 527
boolean|Assembly
validateInstanceCache()
Meßwerte überprüfen
Mit dieser Methode kann die Anwendung prüfen, ob die zwischengespeicherte Anwendung noch aktuell ist. Abgeleitetet Anwendungen müssen die Methode Application::initCacheExaminer() um die Werte erweitern, die für einen aktuelle Anwendung wichtig sind.
at line 308
protected Assembly
initCacheExaminer()
Instanzprüfung erweitern
Die Webklasse überwacht im Standard zusätzlich zur Anwendungskonfiguration noch das routing-Verzeichnis.
Ist ein anderes Verhalten gewünscht, oder wird der Default-Router nicht verwendet, so muss diese Methode von der konkreten Klasse überschrieben werden.
in Assembly at line 574
boolean
isInstanceValide()
Gültigkeit prüfen
Prüfen ob die Daten der Instanz noch gültig sind.
in Assembly at line 593
static void
refresh(string $assemblyClass)
Anwendungsklasse aktualisieren
Mit dieser Methode wird der Zwischenspeicher der Anwendungsklasse geleert. Beim nächsten Aufruf von Assembly::execute wird das Objekt für diese Klasse neu erstellt.
in Assembly at line 639
static CacheManager
getCacheManager()
AppCache zur Beschleunigung von Anfragen
Diese Methode gibt den Anwendungscache zurück. Im Standard ist das temporäre Verzeichnis definiert. Dies sollte in der abgeleiteten Klasse durch eine schnellere Variante (z.B. Memcache) ersetzt werden.
Für Testzwecke und während der Entwicklung einer Anwendung kann diese Methode null zurückgeben. In diesem Fall wird kein Anwendungscache verwendet.
in Assembly at line 662
protected Assembly
loadConfig()
Konfiguration laden
Diese Methode lädt die Konfiguration der Anwendung. Je nach Dateierweiterung wird eine von \Alvine\Types\Properties abgeleitete Klasse geladen. Für die Erweiterung .properties wird ein Objekt der Klasse \Alvine\Application\Configuration\Properties erstellt, für eine Endung .txt würde die Klasse \Alvine\Application\Configuration\Text initiert werden.
at line 269
Map
getPlaceholderMap()
Standardplatzhalter der Anwendung
in Assembly at line 762
string
replaceEnvironmentPlaceholder(string $string)
Standardplatzhalter der Anwendung
at line 684
protected Assembly
initLocationsInstance()
Neue Instanz
in Assembly at line 784
protected string
getLocationsClass()
in Assembly at line 823
protected
initDirectories()
in Assembly at line 841
protected Assembly
initSMTPClient()
Mailclient initialisieren
Initialisierung des Standard-Mail-Clients. Die Konfiguration erfolgt über die Eigenschaften application.mail.delivery.** (siehe auch assembly.config)
application.mail.delivery.default.class Klasse, die den Versand übernimmt (von SMTPClient abgeleitet) application.mail.delivery.default.server IP, oder Hostname des Mailservers (Standard ist localhost) application.mail.delivery.default.port IP-Port des SMTP-Servers (Standard ist 25)
in Assembly at line 891
SMTPClient|null
getDefaultSmtpClient()
SMTP-Client
in Assembly at line 905
protected Assembly
initLogger()
Logging initialisieren
Inititalisierung des Standardloggers für das Logging. Die Konfiguration erfolgt über die Eigenschaften application.logging.**. Der Logger muß von der Klasse \Alvine\Util\Logging\Logger abgeleitet sein. Für die Verarbeitung können die Handler über die Konfigurationsschlüssel
in Assembly at line 958
Properties
getConfiguration()
Konfiguration zurückgeben
Liefert eine Kopie der Konfigurations. Änderungen in dem Objekt haben keine Auswirkungen auf die Anwenndung.
in Assembly at line 975
string
getConfigurationValue(string $key, string $default = null)
Diese Methode liest einen Konfigurationswert aus.
Ist der Schlüssel nicht angegeben, so wird der Default-Wert zurückgegeben.
Wird ein Teilschlüssel angegeben, so wird ebenfalls der Defaultwert zurückgegeben.
in Assembly at line 1018
protected $this
initPersistenceManager()
Instanz des Storage-Manager holen und Referenz in der Anwendung speichern
in Assembly at line 1028
protected Assembly
initStorage()
Initialisiert die Struktur für den Objektspeicher.
in Assembly at line 1060
Assembly
initStorageIndex()
Initialisiert die Struktur für den StorageIndex.
in Assembly at line 1092
Assembly
registerStorage(string $className, ObjectStorage $storage)
Ein Storageobjekt registrieren.
in Assembly at line 1104
Assembly
unregisterStorage(string $className)
Registrierung für eine Klasse aufheben
in Assembly at line 1125
Alvine
getObject(string $className, string $id)
Objekt aus dem Storage auslesen
Diese Methode liest ein Objekt aus dem in der Konfiguration definierten Speicher aus. Der Klassenname muss mit führendem \ und vollem Namensraum angegeben werden.
in Assembly at line 1145
Subset
findObject(string $className, Query $query)
Nach einem Objekt suchen
Die Suche erfolgt in dem in der Konfiguration definierten Indexer. Der Indexer gibt eine Ergebnismenge zurück. Diese Methode holt sich die ID des Ergebnisses und verwendet die Methode getObject um das echte Objekt zu laden.
in Assembly at line 1159
protected ObjectStorage
getPersistenceHandler(string $className, string $mode)
Handler für den entsprechenden Speichertyp
in Assembly at line 1168
Manager
getStorageManager()
Storage-Manager
in Assembly at line 1182
Assembly
deleteObject(Alvine $object)
Objekt aus dem Storage löschen
Diese Methode löscht ein Objekt aus dem in der Konfiguration definierten Speicher.
in Assembly at line 1197
Assembly
writeObject(Alvine $object)
Objekt in den definierten Speicher schreiben
Das übergebene Objekt wird serialisierten und in den angegebenen Speicher geschrieben.
in Assembly at line 1212
string
getHashCode()
Diese Methode berechnet einen eindeutigen Wert für eine Anwendung. Da jede Anwendung nur eine Instanz haben kann, muss dieser Wert nur zu Klasse hin eindeutig sein.
Der Anwendungscache verwendet die ID um die Instanz der Anwendung zwischenzuspeichern. Diese Methode sollte deshalb von abgeleiteten Klassen nicht überschrieben werden.
at line 388
protected Assembly
init()
Initialisierung der Anwendung
Diese Methode wird im Rahmen der Task-Bearbeitung (wenn nicht anders konfiguriert) aufgerufen und initialisiert die Anwendung
at line 700
protected Assembly
finalize()
Finalisierung
Diese Methode wird im Rahmen der Task-Bearbeitung (wenn nicht anders konfiguriert) aufgerufen und schließt die Bearbeitung ab und übergibt alle notwendigen Daten zurück an die PHP-Engine
in Assembly at line 1245
protected Application
handleTasks()
Abarbeiten der in der Config definierten Tasks
at line 804
Alvin
setView(View $view)
Neues View setzen
in Assembly at line 1306
Directory
getCustomisationPath()
deprecated
deprecated
CustomisationPath
in Assembly at line 1317
Directory
getDataPath()
deprecated
deprecated
Daten
in Assembly at line 1328
Directory
getRepositoyPath()
deprecated
deprecated
Speicherort für Daten
in Assembly at line 1339
Directory
getVendorPath()
deprecated
deprecated
Verzeichnis für Fremdanbieterdateien aus dem Backend
in Assembly at line 1350
Directory
getLicensePath()
deprecated
deprecated
Verzeichnis mit Lizenzen
in Assembly at line 1361
Directory
getDefaultPath()
deprecated
deprecated
Verzeichnis der Konfigurationsdateien
in Assembly at line 1372
Directory
getConfigPath()
deprecated
deprecated
Verzeichnis der Konfigurationsdateien
in Assembly at line 1383
Directory
getAssetPath()
deprecated
deprecated
Assets-Verzeichnis
in Assembly at line 1394
Directory
getBasePath()
deprecated
deprecated
Basisverzeichnis
in Assembly at line 1405
Directory
getClassPath()
deprecated
deprecated
Code-Verzeichnis
in Assembly at line 1416
Directory
getLogPath()
deprecated
deprecated
Verzeichnis für Logdateien
in Assembly at line 1427
Directory
getResourcePath()
deprecated
deprecated
Verzeichnis mit Resourcen
in Assembly at line 1454
File
getResourceFile(string $filename)
Resourcen-Datei-Objekt zurückgeben
Die Methode sucht entweder im Resourcen-Verzeichnis der Anwendung oder im Absoluten-Pfad nach der Resourcen-Datei. Ist der Dateiname eine http-Resource so wird die Datei geladen und in eine temporäre Datei gespeichert. Dieses Dateiobjekt wird zurückgegeben.
// Temporäre Datei mit dme Inhalt von www.example.com
$this->getResourceFile('http://www.example.com/');
// Absolute Datei auf einem Windows-System
$this->getResourceFile('file://c:\temp\myfile.txt');
// Absolute Datei auf einem Unix-System (ohne file://)
$this->getResourceFile('/tmp/myfile.txt');
// Absolute Datei auf einem Unix-System (mit file://)
$this->getResourceFile('file:///tmp/myfile.txt');
at line 130
protected Web
initLocaleFromHeader(array $localeArray)
Versuchen die Lokale über den Header zu setzen
at line 155
protected Web
initLocaleFromQuery(array $localeArray)
Versuchen die Lokale über den Request zu setzen
at line 180
protected Web
initLocaleFromRequest(array $localeArray, string $localeString)
Locale initialisieren
at line 195
protected Web
initLocaleFromCookie(array $localeArray)
Versuchen die Lokale über ein Cookie zu setzen
at line 225
Assembly
initLocale()
Lokale initialisieren
Die Lokale kommt aus dem Request. Wird keine passende Locale gefunden, so wird eine ConfigurationException geworfen.
In der Anwendungskonfiguration muss application.locale.languages definirt sein. Über den Schlüssel application.locale.language.requestkey kann ein Parameter definiert werden, der für die Sprache zuständig ist.
# kommagetrennte Liste mit den unterstützen Sprachen
application.locale.languages=de,de_CH,en
# Schlüssel für das Setzen der Lokale über einen Parameter
application.locale.language.parameterkey=language
Auswertereihenfolge: Query -> Cookie -> Header
at line 289
string
getRequestID()
ID des aktuellen Aufrufs (wird von Ignition initialisiert)
at line 338
Router|null
getRouter()
Router der Anwendung
Vor dem Aufruf von getRouter muss Web::initRouter() aufgerufen werden. Web::initRouter() wird in der Regel von Web::init() aufgerufen.
at line 349
protected Web
initRouter()
Router initialisieren
at line 375
Request
getRequest()
Request
Rückgabe des von der PHP-Enging übergebenen Daten in Form eines Request-Objektes
at line 419
Web
initRequest()
Request initialisieren
Initialisieren eines Requests
at line 432
protected User
validateIdentityAgainstAuthorities(string $username, string $password)
Überprüfen des Benutzernamens und des Passwortes
at line 465
Identity|null
getIdentityFromRequest()
Identität aus Request ermitteln. Es wird nach den POST-Variablen username und password gesucht. Akternativ können diese in der Konfiguration mittels der Eigenschaften
- application.web.authentication.identity.key und
- application.web.authentication.identity.password
überschrieben werden.
at line 502
protected null|Identity
getIdentityFromRequestBody(string $userNameKey, string $passwordKey)
Identität aus dem Body holen
at line 517
protected null|Identity
getIdentityFromWWWAuthentification()
Authentifiaction von WWW-Authentification
at line 542
protected Web
authenticate()
Diese Methode liest entweder aus der Session oder aus der POST-Variable username den Namen der angefragten Identität aus.
Der Schlüssel für die verwendete POST-Variable kann über die Konfigurationseinstellung application.web.authentication.identity.key definiert werden. Wurden keine Werte definiert, so wird username und password verwendet.
Wurde keine Identität angegeben, so wird ein Anonymous-Objekt vom Typ
\Alvine\Security\Authentication\Anonymous
inititalisiert.
at line 579
Authority
getAuthority(string $name)
Authority
at line 588
Authority>
getAuthorities()
Authorities
at line 606
Web
initAuthority()
Autorität initialisieren
Konfigurationsvariable: application.web.authentication.authority
Hinweis: Die Identität der Anwendung wird nicht zwangsläufig in der Session gespeichert. Einfache GET-Request brauchen nur die Authorisation und nicht eine Session!
at line 637
protected Web
route()
Diese Methode wird im Rahmen der Task-Bearbeitung (wenn nicht anders konfiguriert) aufgerufen und übergibt den Request an die im Routing definierten Presenter.
Wurde das Routing bereits durchgeführt, z.B. durch einen Authentifikationsfehler, so wird kein neues Routing gestartet.
at line 669
Web
executeRoute(string $destination)
Ausführen eines Routings
at line 774
Web
setCookie(Cookie $cookie)
Cookies für den Versand vormerken.
at line 792
Identity
getIdentity()
Identität der Anwendung
Hinweis: Die Identität der Anwendung wird nicht zwangsläufig in der Session gespeichert. Diese Zuweisung erfolgt zum Beispiel über den Authentication-Presenter.
Der Grund für diese gesonderte Zuweisung ist, das nicht jeder Request eine Session benötigt und bekommt. Ein einfacher Request kommt ohne Session aus und spart somit Resourcen.
at line 816
Directory
getWebPath()
deprecated
deprecated
Verzeichnis der Webdateien
at line 827
Directory
getErrorPath()
deprecated
deprecated
Verzeichnis der Fehlerdateien
at line 838
Directory
getJSPath()
deprecated
deprecated
Verzeichnis fürJavascript
at line 849
Directory
getThemePath()
deprecated
deprecated
Verzeichnis der Themes
at line 860
Directory
getPublicVendorPath()
deprecated
deprecated
Verzeichnis für Fremdanbieterdateien Frontend
at line 871
Directory
getW3CPath()
deprecated
deprecated
Verzeichnis mit P2P Datei
at line 882
URI
getBaseURI()
deprecated
deprecated
Basis-URI
at line 892
boolean
existsSession()
Prüft ob im Request eine Session gesetzt ist.
at line 904
arraygetSessionDefinition()
Session Definition
Nur zur internen Verwendung in dieser Klasse Der Aufbau der Struktur kann sich jederzeit ändern.
at line 930
Session|null
getSession()
Session
at line 950
Web
initSession()
Lädt eine Session oder erstellt diese neu. Der Name der Klasse und der Name des Cookies, in dem die Session-ID gespeichert wird, kann über die Konfiguration gesteuert werden.
Werden keie Konfigurationswerte verwendet, so wird die Klasse \Alvine\Net\Session\Session, der Cookie-Name sid und eine Gültigkeit von einer Stunde verwendet.
Die Session wird aus dem in der Anwendung definierten Speicher abgelegt und aus diesem geladen. Ist keine Session verfügbar, so wird eine neue Session erstellt.
at line 1011
protected Session
loadSession(string $sessionClass, string $id)
Diese interne Methode wird von Web::initSession() aufgerufen und lädt eine Session aus dem gegebenen Storagesystem. Für andere Storagesysteme muss diese Methode überschrieben werden.
at line 1028
protected Web
writeSession()
Session schreiben. Für andere Storagesysteme muss diese Methode überschrieben werden.
Hinweis: Die Identität der Anwendung wird nicht zwangsläufig in der Session gespeichert. Diese Zuweisung muss gesondert erfolgen (zum Beispiel über den Authentifcator-Presenter).
Der Grund für diese gesonderte Zuweisung ist, das nicht jeder Request eine Session benötigt und nicht jede Session die Indentitäts-Informationen benötigt.