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

__construct(Facility $facility)

Neues Anwendugs-Objekt erstellen.

__destruct()

Anwendung beenden

initEventQueues()

Eventqueues

EventQueue
getEventQueue(Event $class)

Eventqueue für Event holen und wenn noch nicht vorhanden anlegen

subscribeEvent(Subscriber $subscriber, string $eventClass)

Event abonnieren

unsubscribeEvent(Subscriber $subscriber, string $eventClass)

Abmelden

triggerEvent(Event $event)

Event Triggern

bool
shouldBeCached()

Soll die Anwendung cachen

Locale
getLocale()

Lokale der Anwendung

static Assembly
execute(Facility $facility)

Programm ausführen

static Assembly
checkCompatibility(Throwable $e)

Prüpft ob die Kompatibilität eingehalten wurde.

static Assembly|null
getInstance(string $assemblyClass = null)

Instanz ermitteln. Wird keine Instanzklasse angegeben, so wird das aktuelle Objekt in der Instanz-Map verwendet.

boolean|Assembly
validateInstanceCache()

Meßwerte überprüfen

initCacheExaminer()

Instanzprüfung inititalisieren

boolean
isInstanceValide()

Gültigkeit prüfen

static void
refresh(string $assemblyClass)

Anwendungsklasse aktualisieren

static CacheManager
getCacheManager()

AppCache zur Beschleunigung von Anfragen

loadConfig()

Konfiguration laden

Map
getPlaceholderMap()

Standardplatzhalter der Anwendung

string
replaceEnvironmentPlaceholder(string $string)

Standardplatzhalter der Anwendung

string
getLocationsClass()

No description

getLocations()

Pfade der Anwendung

initDirectories()

No description

Assembly
initSMTPClient()

Mailclient initialisieren

SMTPClient|null
getDefaultSmtpClient()

SMTP-Client

Assembly
initLogger()

Logging initialisieren

getConfiguration()

Konfiguration zurückgeben

string
getConfigurationValue(string $key, string $default = null)

Diese Methode liest einen Konfigurationswert aus.

$this
initPersistenceManager()

Instanz des Storage-Manager holen und Referenz in der Anwendung speichern

initStorage()

Initialisiert die Struktur für den Objektspeicher.

initStorageIndex()

Initialisiert die Struktur für den StorageIndex.

registerStorage(string $className, ObjectStorage $storage)

Ein Storageobjekt registrieren.

unregisterStorage(string $className)

Registrierung für eine Klasse aufheben

Alvine
getObject(string $className, string $id)

Objekt aus dem Storage auslesen

Subset
findObject(string $className, Query $query)

Nach einem Objekt suchen

ObjectStorage
getPersistenceHandler(string $className, string $mode)

Handler für den entsprechenden Speichertyp

Manager
getStorageManager()

Storage-Manager

deleteObject(Alvine $object)

Objekt aus dem Storage löschen

writeObject(Alvine $object)

Objekt in den definierten Speicher schreiben

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.

init()

Task: Init - Inititalisierung der Anwendungsklasse

finalize()

Abschlußarbeiten

Application
handleTasks()

Abarbeiten der in der Config definierten Tasks

Alvin
setView(View $view)

Neues View setzen

getView()

View

Directory
getCustomisationPath() deprecated

CustomisationPath

Directory
getDataPath() deprecated

Daten

Directory
getRepositoyPath() deprecated

Speicherort für Daten

Directory
getVendorPath() deprecated

Verzeichnis für Fremdanbieterdateien aus dem Backend

Directory
getLicensePath() deprecated

Verzeichnis mit Lizenzen

Directory
getDefaultPath() deprecated

Verzeichnis der Konfigurationsdateien

Directory
getConfigPath() deprecated

Verzeichnis der Konfigurationsdateien

Directory
getAssetPath() deprecated

Assets-Verzeichnis

Directory
getBasePath() deprecated

Basisverzeichnis

Directory
getClassPath() deprecated

Code-Verzeichnis

Directory
getLogPath() deprecated

Verzeichnis für Logdateien

Directory
getResourcePath() deprecated

Verzeichnis mit Resourcen

File
getResourceFile(string $filename)

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.

Parameters

Facility $facility

Exceptions

ConfigurationException

at line 257
__destruct()

Anwendung beenden

at line 269
protected Assembly initEventQueues()

Eventqueues

Return Value

Assembly

at line 284
protected EventQueue getEventQueue(Event $class)

Eventqueue für Event holen und wenn noch nicht vorhanden anlegen

Parameters

Event $class

Return Value

EventQueue

Exceptions

TypeException

at line 307
Assembly subscribeEvent(Subscriber $subscriber, string $eventClass)

Event abonnieren

Parameters

Subscriber $subscriber
string $eventClass

Return Value

Assembly

at line 320
Assembly unsubscribeEvent(Subscriber $subscriber, string $eventClass)

Abmelden

Parameters

Subscriber $subscriber
string $eventClass

Return Value

Assembly

at line 332
Assembly triggerEvent(Event $event)

Event Triggern

Parameters

Event $event

Return Value

Assembly

at line 342
bool shouldBeCached()

Soll die Anwendung cachen

Return Value

bool

at line 351
Locale getLocale()

Lokale der Anwendung

Return Value

Locale

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.

Parameters

Facility $facility

Return Value

Assembly Instanz der Anwendung

Exceptions

AssemblyNotFoundException
InvalidArgumentException

at line 467
static protected Assembly checkCompatibility(Throwable $e)

Prüpft ob die Kompatibilität eingehalten wurde.

Parameters

Throwable $e

Return Value

Assembly

Exceptions

Throwable

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.

Parameters

string $assemblyClass

Return Value

Assembly|null

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.

Return Value

boolean|Assembly

Exceptions

InvalidProbeException

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.

Return Value

Assembly Dieses Objekt

at line 574
boolean isInstanceValide()

Gültigkeit prüfen

Prüfen ob die Daten der Instanz noch gültig sind.

Return Value

boolean Ergebnis

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.

Parameters

string $assemblyClass

Return Value

void

Exceptions

AssemblyNotFoundException

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.

Return Value

CacheManager CacheManager

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.

Return Value

Assembly

Exceptions

ConfigurationException
NotFoundException

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']

Return Value

Map Systemplatzhalter

at line 762
string replaceEnvironmentPlaceholder(string $string)

Standardplatzhalter der Anwendung

Parameters

string $string Inhalt

Return Value

string Inhalt mit ersetzten Platzhaltern

at line 774
protected Assembly initLocationsInstance()

Neue Instanz

Return Value

Assembly

at line 784
protected string getLocationsClass()

Return Value

string

at line 793
Locations getLocations()

Pfade der Anwendung

Return Value

Locations

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)

Return Value

Assembly Dieses Objekt

at line 891
SMTPClient|null getDefaultSmtpClient()

SMTP-Client

Return Value

SMTPClient|null

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

Return Value

Assembly Dieses Objekt

at line 958
Properties getConfiguration()

Konfiguration zurückgeben

Liefert eine Kopie der Konfigurations. Änderungen in dem Objekt haben keine Auswirkungen auf die Anwenndung.

Return Value

Properties

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.

Parameters

string $key Schlüssel
string $default Wert

Return Value

string Konfigurationswert

at line 1018
protected $this initPersistenceManager()

Instanz des Storage-Manager holen und Referenz in der Anwendung speichern

Return Value

$this

at line 1028
protected Assembly initStorage()

Initialisiert die Struktur für den Objektspeicher.

Return Value

Assembly

at line 1060
Assembly initStorageIndex()

Initialisiert die Struktur für den StorageIndex.

Return Value

Assembly

at line 1092
Assembly registerStorage(string $className, ObjectStorage $storage)

Ein Storageobjekt registrieren.

Parameters

string $className Für diese Klasse oder das Interface gilt das Storageobjekt
ObjectStorage $storage Storageobjekt

Return Value

Assembly Dieses Objekt

at line 1104
Assembly unregisterStorage(string $className)

Registrierung für eine Klasse aufheben

Parameters

string $className Name der Klasse

Return Value

Assembly Dieses Objekt

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.

Parameters

string $className Name der Klasse
string $id ID des Objektes

Return Value

Alvine Gespeicherte Klasse

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.

Parameters

string $className Klassenname
Query $query Query

Return Value

Subset Ergebnismenge

Exceptions

NullException Es wurde kein Handler für den Typ gefunden
FindException Im Ergebnis wurde ein Eintrag ohne UUID oder Type gefunden. Wahrscheinlich ist der Index nicht mehr konsistent.

at line 1159
protected ObjectStorage getPersistenceHandler(string $className, string $mode)

Handler für den entsprechenden Speichertyp

Parameters

string $className Klassenname
string $mode Mode für die Exception

Return Value

ObjectStorage

Exceptions

NullException Nicht gefunden

at line 1168
Manager getStorageManager()

Storage-Manager

Return Value

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.

Parameters

Alvine $object zu löschende Objekt

Return Value

Assembly Dieses Objekt

at line 1197
Assembly writeObject(Alvine $object)

Objekt in den definierten Speicher schreiben

Das übergebene Objekt wird serialisierten und in den angegebenen Speicher geschrieben.

Parameters

Alvine $object zu speicherndes Objekt

Return Value

Assembly Dieses Objekt

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.

Return Value

string Hashwert des Objektes

at line 1222
protected Assembly init()

Task: Init - Inititalisierung der Anwendungsklasse

Return Value

Assembly

at line 1233
protected Assembly finalize()

Abschlußarbeiten

Return Value

Assembly Dieses Objekt

at line 1245
protected Application handleTasks()

Abarbeiten der in der Config definierten Tasks

Return Value

Application Dieses Objekt

Exceptions

TaskNotFoundException Der Task wurde nicht gefunden.

at line 1282
Alvin setView(View $view)

Neues View setzen

Parameters

View $view View

Return Value

Alvin e\Application\Application Dieses Objekt

at line 1295
View getView()

View

Return Value

View View

at line 1306
Directory getCustomisationPath() deprecated

deprecated since version 20200707

CustomisationPath

at line 1317
Directory getDataPath() deprecated

deprecated since version 20200707

Daten

at line 1328
Directory getRepositoyPath() deprecated

deprecated since version 20200707

Speicherort für Daten

at line 1339
Directory getVendorPath() deprecated

deprecated since version 20200707

Verzeichnis für Fremdanbieterdateien aus dem Backend

at line 1350
Directory getLicensePath() deprecated

deprecated since version 20200707

Verzeichnis mit Lizenzen

at line 1361
Directory getDefaultPath() deprecated

deprecated since version 20200707

Verzeichnis der Konfigurationsdateien

at line 1372
Directory getConfigPath() deprecated

deprecated since version 20200707

Verzeichnis der Konfigurationsdateien

at line 1383
Directory getAssetPath() deprecated

deprecated since version 20200707

Assets-Verzeichnis

at line 1394
Directory getBasePath() deprecated

deprecated since version 20200707

Basisverzeichnis

at line 1405
Directory getClassPath() deprecated

deprecated since version 20200707

Code-Verzeichnis

at line 1416
Directory getLogPath() deprecated

deprecated since version 20200707

Verzeichnis für Logdateien

at line 1427
Directory getResourcePath() deprecated

deprecated since version 20200707

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');

Parameters

string $filename Dateiname oder URI

Return Value

File