Console
abstract class Console extends Assembly
Implementierung einer Konsolen-Anwendung
Constants
DEFAULTSTORAGEHANDLER |
Klassenname des Default-Handlers |
DEFAULTSTORAGEINDEXHANDLER |
Klassenname des Default-Handlers dex Indexers |
UUID |
Default UUID dieser Klasse |
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 |
EXIT_OK |
Anwendung normal beendet |
EXIT_ERROR |
Allgemeiner Fehler |
EXIT_EXCEPTION |
Fehler beim Parsen |
EXIT_PARSEEXCEPTION |
Fehler beim Parsen |
EXIT_MISSINGOPTION |
Fehlende Option |
EXIT_UNSUPPORTED |
Nicht unterstützt |
EXIT_LIMITEXCEPTION |
Zuviel Optionen |
EXIT_DATASOURCEEXCEPTION |
Datenbank-Ausnahme |
Properties
protected Facility | $facility | from Assembly | |
protected Node | $configuration | from Assembly | |
protected Directory | $defaultPath | Im default-Verzeichnis liegen die Standard-Konfigurationsdateien. | from Assembly |
protected Directory | $basePath | Der Basispfad der Anwendung | from Assembly |
protected Directory | $vendorPath | from Assembly | |
protected Directory | $dataPath | from Assembly | |
protected Directory | $customisationPath | from Assembly | |
protected Directory | $assetPath | Unter Assets werden Mediadateien wie Grafiken oder CSS-Dateien abgelegt. | from Assembly |
protected Directory | $classPath | Der Klassenpfad der Anwendung | from Assembly |
protected Directory | $configPath | Im config-Verzeichnis liegen die Konfigurationsdateien der Anwendung Dieser Pfad zeigt auf die Konfiguration der Facility. | from Assembly |
protected Directory | $logPath | from Assembly | |
protected Directory | $licensePath | Lizenzdateien | from Assembly |
protected Directory | $repositoyPath | Speicherort für Objekte | from Assembly |
protected Directory | $resourcePath | Resourcen | from Assembly |
static protected ObjectMap | $instance | Einzige Objektinstanz (singelton) der Anwendung | 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 ArgumentParser | $parser | ||
protected Terminal | $terminal | ||
protected integer | $exitCode | ||
protected PropertyText | $resourceText | ||
protected array | $hints |
Methods
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.
Standardplatzhalter der Anwendung
Diese Methode liest einen Konfigurationswert aus.
Instanz des Storage-Manager holen und Referenz in der Anwendung speichern
Initialisiert die Struktur für den Objektspeicher.
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.
Abarbeiten der in der Config definierten Tasks
Hints leeren
Exitcode
Exitcode
No description
Das aktuelle Terminal-Objekt holen
No description
No description
Internationalisierung
Lokalisierten Text holen
Ressourcentexte initialisieren
No description
No description
No description
Details
at line 121
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.
in Assembly at line 325
__destruct()
Anwendung beenden
in Assembly at line 352
protected EventQueue
getEventQueue(Event $class)
Eventqueue für Event holen und wenn noch nicht vorhanden anlegen
in Assembly at line 375
Assembly
subscribeEvent(Subscriber $subscriber, string $eventClass)
Event abonnieren
in Assembly at line 388
Assembly
unsubscribeEvent(Subscriber $subscriber, string $eventClass)
Abmelden
in Assembly at line 410
bool
shouldBeCached()
Soll die Anwendung cachen
in Assembly at line 419
Locale
getLocale()
Lokale der Anwendung
in Assembly at line 454
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 533
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 553
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.
in Assembly at line 574
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.
in Assembly at line 600
boolean
isInstanceValide()
Gültigkeit prüfen
Prüfen ob die Daten der Instanz noch gültig sind.
in Assembly at line 619
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 665
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 688
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.
in Assembly at line 744
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']
in Assembly at line 786
Directory
getCustomisationPath()
CustomisationPath
in Assembly at line 795
Directory
getDataPath()
Daten
in Assembly at line 806
string
replaceEnvironmentPlaceholder(string $string)
Standardplatzhalter der Anwendung
in Assembly at line 830
protected
initDirectories()
in Assembly at line 915
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 965
SMTPClient|null
getDefaultSmtpClient()
SMTP-Client
in Assembly at line 979
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 1032
Properties
getConfiguration()
Konfiguration zurückgeben
Liefert eine Kopie der Konfigurations. Änderungen in dem Objekt haben keine Auswirkungen auf die Anwenndung.
in Assembly at line 1049
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 1092
protected $this
initPersistenceManager()
Instanz des Storage-Manager holen und Referenz in der Anwendung speichern
at line 499
protected Assembly
initStorage()
Initialisiert die Struktur für den Objektspeicher.
in Assembly at line 1134
Assembly
initStorageIndex()
Initialisiert die Struktur für den StorageIndex.
in Assembly at line 1166
Assembly
registerStorage(string $className, ObjectStorage $storage)
Ein Storageobjekt registrieren.
in Assembly at line 1178
Assembly
unregisterStorage(string $className)
Registrierung für eine Klasse aufheben
in Assembly at line 1199
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 1219
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 1233
protected ObjectStorage
getPersistenceHandler(string $className, string $mode)
Handler für den entsprechenden Speichertyp
in Assembly at line 1242
Manager
getStorageManager()
Storage-Manager
in Assembly at line 1256
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 1271
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 1286
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 178
Assembly
init()
Initialisieren der Anwendung
at line 572
protected Application
handleTasks()
Abarbeiten der in der Config definierten Tasks
in Assembly at line 1395
Directory
getRepositoyPath()
Speicherort für Daten
in Assembly at line 1404
Directory
getVendorPath()
Verzeichnis für Fremdanbieterdateien aus dem Backend
in Assembly at line 1413
Directory
getLicensePath()
Verzeichnis mit Lizenzen
in Assembly at line 1422
Directory
getDefaultPath()
Verzeichnis der Konfigurationsdateien
in Assembly at line 1431
Directory
getConfigPath()
Verzeichnis der Konfigurationsdateien
in Assembly at line 1440
Directory
getAssetPath()
Assets-Verzeichnis
in Assembly at line 1449
Directory
getBasePath()
Basisverzeichnis
in Assembly at line 1458
Directory
getClassPath()
Code-Verzeichnis
in Assembly at line 1467
Directory
getResourcePath()
Verzeichnis mit Resourcen
in Assembly at line 1494
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');
in Assembly at line 1517
Directory
getLogPath()
Verzeichnis für Logdateien
at line 158
Console
addHint(string $message)
Hint hinzufügen
at line 168
Console
clearHints()
Hints leeren
at line 203
Console
setExitCode(integer $code)
Exitcode
at line 213
integer
getExitCode()
Exitcode
at line 223
static ArrayHelper
getCallArguments()
at line 245
Terminal
getTerminal()
Das aktuelle Terminal-Objekt holen
at line 258
Console
writeLine(string $text, Color $foreground = null, Color $background = null)
Text Zeilenweise Ausgeben
at line 274
Console
write(string $text)
i18n Schlüssel ersetzen und Text ausgeben
at line 288
Console
writeRaw(string $text)
Text ausgeben
at line 301
Console
writeError(string $message)
at line 331
Console
writeHint(string $message)
at line 353
Console
writeHints()
at line 438
string
replaceI18N(string $content, string $quoteCharList = null)
Internationalisierung
Die Platzhalter müssen mit i18n anfangen:
i18n{mykeytoreplace}
Die Eigenschaft muss dann mit dem Schlüssel angelegt werden:
mykeytoreplace=Text
In der Anwendungskonfiguration kann der Schlüssel application.web.i18n.showkeys auf true gesetzt werden.
Wird die Zeichenkette $quoteCharList übergeben, so werden alle Zeichen die darin enthalten sind mit einem Backslash versehen. Diese Funktion verwendet die PHP Version \addcslashes
at line 486
string
getText(string $text, string $default = null, string $pluralKey = null)
Lokalisierten Text holen
Beispiele wenn der Schlüssel nicht gefunden wird:
// Lokalisierung mit Default-Wert
Presenter::getText('my.key::name=Hans', 'Hallo!');
-> Hallo!
// Wird kein Default übergeben wird der Schlüssel ausgegeben
Presenter::getText('my.key::name=Hans');
-> my.key::name=Hans
at line 518
DefaultPresenter
initResourceText(string $resource = null, Directory $basepath = null)
Ressourcentexte initialisieren
at line 561
ArgumentParser
getParser()
at line 640
Console
run()
Anwendung ausführen
Werden keine oder die falschen Argumente übergeben, so gibt die Methode den Hilfstext, der durch die Befehle definiert wurde zurück.