Assembly
abstract class Assembly extends Alvine
Definition eines Rahmen der eine Anwenung kapselt und alle Informationen sammelt.
Eine Anwendung wird über den Factory-Methode execute() gestartet. Als Parameter wird die gewünschte Anwendung als String übergeben.
try {
\Alvine\Application\Assembly::execute(
__NAMESPACE__.'\Implementation\Main', // Klassenname der Hauptklasse inkl. Namensraum
__DIR__.DIRECTORY_SEPARATOR. // Pfad auf die Zusammenstellung
'..'.DIRECTORY_SEPARATOR.
'..'.DIRECTORY_SEPARATOR);
} catch(\Exception $e) {
echo $e->getMessage();
}
Die Tasks die eine Anwendung durchführen soll, werden in der Konfigurationsdatei der Anwendung unter den Schlüsseln application.task.* aufgeführt. Soll eine Anwendung einen Task besitzen, so kann die Konfiguration folgendermassen aussehen.
// Initialisieren der Anwendung
application.task.do=runDo
// Es wird die Methode ->runDo() in der Klasse
// der Anwendung aufgerufen.
Constants
UUID |
Statische 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 | ||
protected Node | $configuration | ||
static protected ObjectMap | $instance | Einzige Objektinstanz (singelton) der Anwendung | |
protected Locations | $locations | ||
static protected CacheManager | $cacheManager | ||
protected View | $view | ||
protected Examiner | $cacheExaminer | ||
protected EventQueue> | $volatileEventQueues | ||
protected Locale | $locale | ||
protected Manager | $storageManager | ||
protected SMTPClient | $defaultSmtpClient |
Methods
Anwendung beenden
Eventqueues
Eventqueue für Event holen und wenn noch nicht vorhanden anlegen
Event abonnieren
Abmelden
Event Triggern
Soll die Anwendung cachen
Lokale der Anwendung
Instanz ermitteln. Wird keine Instanzklasse angegeben, so wird das aktuelle Objekt in der Instanz-Map verwendet.
Meßwerte überprüfen
Instanzprüfung inititalisieren
Gültigkeit prüfen
Anwendungsklasse aktualisieren
AppCache zur Beschleunigung von Anfragen
Konfiguration laden
Standardplatzhalter der Anwendung
Standardplatzhalter der Anwendung
Neue Instanz
No description
Pfade der Anwendung
No description
Mailclient initialisieren
SMTP-Client
Logging initialisieren
Konfiguration zurückgeben
Diese Methode liest einen Konfigurationswert aus.
Instanz des Storage-Manager holen und Referenz in der Anwendung speichern
Initialisiert die Struktur für den Objektspeicher.
Initialisiert die Struktur für den StorageIndex.
Ein Storageobjekt registrieren.
Registrierung für eine Klasse aufheben
Objekt aus dem Storage auslesen
Nach einem Objekt suchen
Handler für den entsprechenden Speichertyp
Storage-Manager
Objekt aus dem Storage löschen
Objekt in den definierten Speicher schreiben
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.
Abarbeiten der in der Config definierten Tasks
Resourcen-Datei-Objekt zurückgeben
Details
at line 235
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 257
__destruct()
Anwendung beenden
at line 269
protected Assembly
initEventQueues()
Eventqueues
at line 284
protected EventQueue
getEventQueue(Event $class)
Eventqueue für Event holen und wenn noch nicht vorhanden anlegen
at line 307
Assembly
subscribeEvent(Subscriber $subscriber, string $eventClass)
Event abonnieren
at line 320
Assembly
unsubscribeEvent(Subscriber $subscriber, string $eventClass)
Abmelden
at line 332
Assembly
triggerEvent(Event $event)
Event Triggern
at line 342
bool
shouldBeCached()
Soll die Anwendung cachen
at line 351
Locale
getLocale()
Lokale der Anwendung
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.
at line 467
static protected Assembly
checkCompatibility(Throwable $e)
Prüpft ob die Kompatibilität eingehalten wurde.
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.
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 548
protected Assembly
initCacheExaminer()
Instanzprüfung inititalisieren
Abgeleitetet Anwendungen müssen diese Methode um die wichtigen Meßwerte erweitern. In dieser Implementierung wird die Konfigurationsdatei als Meßwert verwendet. Ändert sich die Konfigurationdatei, so wird der Cache für ungültig erklärt.
at line 574
boolean
isInstanceValide()
Gültigkeit prüfen
Prüfen ob die Daten der Instanz noch gültig sind.
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.
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.
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 718
Map
getPlaceholderMap()
Standardplatzhalter der Anwendung
Pfade {CONFIGPATH} Pfad zu den Konfigurationsdateien {DEFAULTPATH} Pfad zu den Standardwerten der Konfiguration {DATAPATH} Pfad zu den Dateien des Projekts {CUSTOMISATIONPATH} Pfad zu Anpassungen {ASSETSPATH} Pfad zu den Assets {BASEPATH} Pfad zu Hauptverzeichnis der Anwendung (muss nicht das Webroot sein) {LICENCEPATH} Pfad zu den Lizenzen {REPOSITORYPATH} Pfad zum Repository {VENDORPATH} Pfad zu Systembibliotheken {RESOURCEPATH} Pfad zu den Resourcen {TEMPPATH} Temporäres Verzeichnis des Systems {LOGPATH} Pfad zum Logverzeichnis
Anwendung {LANGUAGE} Sprache {APPLICATIONID} UUID der Anwendung
Environment {ENV:KEY} Environmentvariable $_ENV['KEY']
at line 762
string
replaceEnvironmentPlaceholder(string $string)
Standardplatzhalter der Anwendung
at line 774
protected Assembly
initLocationsInstance()
Neue Instanz
at line 784
protected string
getLocationsClass()
at line 793
Locations
getLocations()
Pfade der Anwendung
at line 823
protected
initDirectories()
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)
at line 891
SMTPClient|null
getDefaultSmtpClient()
SMTP-Client
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
at line 958
Properties
getConfiguration()
Konfiguration zurückgeben
Liefert eine Kopie der Konfigurations. Änderungen in dem Objekt haben keine Auswirkungen auf die Anwenndung.
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.
at line 1018
protected $this
initPersistenceManager()
Instanz des Storage-Manager holen und Referenz in der Anwendung speichern
at line 1028
protected Assembly
initStorage()
Initialisiert die Struktur für den Objektspeicher.
at line 1060
Assembly
initStorageIndex()
Initialisiert die Struktur für den StorageIndex.
at line 1092
Assembly
registerStorage(string $className, ObjectStorage $storage)
Ein Storageobjekt registrieren.
at line 1104
Assembly
unregisterStorage(string $className)
Registrierung für eine Klasse aufheben
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.
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.
at line 1159
protected ObjectStorage
getPersistenceHandler(string $className, string $mode)
Handler für den entsprechenden Speichertyp
at line 1168
Manager
getStorageManager()
Storage-Manager
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.
at line 1197
Assembly
writeObject(Alvine $object)
Objekt in den definierten Speicher schreiben
Das übergebene Objekt wird serialisierten und in den angegebenen Speicher geschrieben.
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 1222
protected Assembly
init()
Task: Init - Inititalisierung der Anwendungsklasse
at line 1233
protected Assembly
finalize()
Abschlußarbeiten
at line 1245
protected Application
handleTasks()
Abarbeiten der in der Config definierten Tasks
at line 1282
Alvin
setView(View $view)
Neues View setzen
at line 1295
View
getView()
View
at line 1306
Directory
getCustomisationPath()
deprecated
deprecated
CustomisationPath
at line 1317
Directory
getDataPath()
deprecated
deprecated
Daten
at line 1328
Directory
getRepositoyPath()
deprecated
deprecated
Speicherort für Daten
at line 1339
Directory
getVendorPath()
deprecated
deprecated
Verzeichnis für Fremdanbieterdateien aus dem Backend
at line 1350
Directory
getLicensePath()
deprecated
deprecated
Verzeichnis mit Lizenzen
at line 1361
Directory
getDefaultPath()
deprecated
deprecated
Verzeichnis der Konfigurationsdateien
at line 1372
Directory
getConfigPath()
deprecated
deprecated
Verzeichnis der Konfigurationsdateien
at line 1383
Directory
getAssetPath()
deprecated
deprecated
Assets-Verzeichnis
at line 1394
Directory
getBasePath()
deprecated
deprecated
Basisverzeichnis
at line 1405
Directory
getClassPath()
deprecated
deprecated
Code-Verzeichnis
at line 1416
Directory
getLogPath()
deprecated
deprecated
Verzeichnis für Logdateien
at line 1427
Directory
getResourcePath()
deprecated
deprecated
Verzeichnis mit Resourcen
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');