Benutzer-Werkzeuge

Webseiten-Werkzeuge


dev:284:registry

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
dev:284:registry [07.11.2014 08:36] – [Anwendung von WbAdaptor] Manuela v.d.Deckendev:284:registry [26.09.2023 07:09] (aktuell) Manuela v.d.Decken
Zeile 1: Zeile 1:
 ====== Die Registry (WbAdaptor) ====== ====== Die Registry (WbAdaptor) ======
-Programmieren ohne globale Konstanten.+Programmieren ohne **globale** Konstanten und Variablen.
  
-Längerfristig ist geplant, in WebsiteBaker eine 'Registry' aufzubauen. Bis diese endgültig steht, wird die Klasse '**WbAdaptor**' einen Teil deren Aufgaben übernehmen. Zu allererst stellt die Klasse Eigenschaften bereit, die mit den bisherigen Konstanten mehr oder weniger identisch sind. Parallel dazu stehen auch die alten Konstanten, für alten Code, -noch- unverändert zur Verfügung, jedoch dürfen sie **nicht** mehr für neuen oder überarbeiteten Code benutzt werden!+Mittelfristig ist geplant, in WebsiteBaker eine 'Registry' aufzubauen. Bis diese endgültig steht, wird die Klasse '**WbAdaptor**' einen Teil deren Aufgaben übernehmen. Zu allererst stellt die Klasse Eigenschaften bereit, die mit den bisherigen Konstanten mehr oder weniger identisch sind. Parallel dazu stehen auch die alten Konstanten, für alten Code, -noch- unverändert zur Verfügung, jedoch dürfen sie **nicht** mehr für neuen oder überarbeiteten Code benutzt werden!
 ===== Überblick ===== ===== Überblick =====
 Globale Konstanten haben eine grundlegende Eigenschaft, die 'fauler' Programmierung sehr entgegen kommt: Einmal deklariert, stehen sie ohne jeglichen Zusatzaufwand an absolut jeder Stelle des Quellcodes direkt zur Verfügung. Sichtbarkeits- und Gültigkeitsbereiche spielen für sie keinerlei Rolle. Ganz 'faule' Programmierer benutzen Konstanten zweckentfremdet als Variablen, die irgendwann im Ablauf gesetzt werden und dann in nachfolgenden Funktionen ohne extra Übergabe verfügbar sind.  Globale Konstanten haben eine grundlegende Eigenschaft, die 'fauler' Programmierung sehr entgegen kommt: Einmal deklariert, stehen sie ohne jeglichen Zusatzaufwand an absolut jeder Stelle des Quellcodes direkt zur Verfügung. Sichtbarkeits- und Gültigkeitsbereiche spielen für sie keinerlei Rolle. Ganz 'faule' Programmierer benutzen Konstanten zweckentfremdet als Variablen, die irgendwann im Ablauf gesetzt werden und dann in nachfolgenden Funktionen ohne extra Übergabe verfügbar sind. 
Zeile 12: Zeile 12:
 Globale Konstanten sind ja, wie schon seit langem bekannt, ab dieser Version deprecated, sprich unerwünscht. Siehe: [[dev:284:deprecated|Deprecated-Liste Eintrag 10 v. 12.2013]] Globale Konstanten sind ja, wie schon seit langem bekannt, ab dieser Version deprecated, sprich unerwünscht. Siehe: [[dev:284:deprecated|Deprecated-Liste Eintrag 10 v. 12.2013]]
  
-Selbstverständlich funktioniert das jetzt nicht so, dass man alle bisherigen Konstanten einfach nur Ersatzlos streicht. Das ist schlichtweg unmöglich. Zumindest im ersten Schritt stellt die Klasse '**WbAdaptor**' jedoch Eigenschaften bereit, die den bisherigen Konstanten ähneln.+Selbstverständlich funktioniert das jetzt nicht so, dass man alle bisherigen Konstanten einfach nur Ersatzlos streicht. Das ist schlichtweg unmöglich. Zumindest im ersten Schritt stellt die Klasse '**WbAdaptor**' jedoch Eigenschaften bereit, die den bisherigen Konstanten im Prinzip entsprechen.
  
 Eine wesentliche Änderung hat sich bei der Schreibweise der Bezeichner ergeben:\\ Eine wesentliche Änderung hat sich bei der Schreibweise der Bezeichner ergeben:\\
-Wurden die Bezeichner bisher ausschließlich in Großbuchstaben geschrieben und mehrere Einzelworte durch einen Unterstrich **_** getrennt, so bestehen die neuen Bezeichner zwar weiterhin aus der selben Zeichenfolge, jedoch in '**//StudlyCaps//**'-Schreibweise ohne Trennzeichen zwischen einzelnen Wörtern.+Wurden die Bezeichner bisher ausschließlich in Großbuchstaben geschrieben und mehrere Einzelworte durch einen Unterstrich **_** getrennt, so bestehen die neuen Bezeichner zwar meist weiterhin aus der selben Zeichenfolge, jedoch in '**//StudlyCaps//**'-Schreibweise ohne Trennzeichen zwischen einzelnen Wörtern.
  
 __Beispiel:__ aus **DEFAULT_TEMPLATE** wird jetzt **DefaultTemplate** __Beispiel:__ aus **DEFAULT_TEMPLATE** wird jetzt **DefaultTemplate**
  
-Die Transformation der Bezeichner erfolgt automatisch beim Einlesen in die Klasse WbAdaptor.+Die Transformation der Konstanten-Bezeichner erfolgt automatisch beim Einlesen in die Klasse WbAdaptor.
  
 Soweit so gut. Damit es nicht ganz so einfach wird, hat sich bei einem runden Dutzend ehemaliger Konstanten der Bezeichner(Schlüssel) komplett verändert und auch teilweise der Inhalt!! Soweit so gut. Damit es nicht ganz so einfach wird, hat sich bei einem runden Dutzend ehemaliger Konstanten der Bezeichner(Schlüssel) komplett verändert und auch teilweise der Inhalt!!
Zeile 26: Zeile 26:
 ===== Geänderte Bezeichner ===== ===== Geänderte Bezeichner =====
    
-Liste mit neuen Bezeichnern und Beispielen des jetzigen Inhaltes.+Liste mit neuen Bezeichnern und Beispielen des jetzigen Inhaltes.\\ 
 +FIXME (Achtung: diese Liste ist nicht vollständig!)
  
-^alte Konstante \_ \_ \_ \_ \_ \_ \_ \_  ^neuer Schlüssel  \_ \_ \_ \_ \_ \_ \_ \_ \_  ^Inhalt (Beispielhaft)  ^+^alte Konstante   ^neuer Schlüssel    ^Inhalt (Beispielhaft)  ^ 
 +|NEW               |getDatabase()   |das aktuelle Datenbankzugriffsobjekt           | 
 +|NEW               |getTranslate()  |das aktuelle Translation-Objekt                | 
 +|NEW               |getApplication() |das aktuelle Applikations-/Core-Objekt         |  
 +|NEW               |getRequester()  |das aktuelle Requester Objekt                  | 
 +|NEW               |PageId          |die ID der aktuellen Seite                     | 
 +|NEW               |BlockId         |die ID des aktuellen Blockes                   | 
 +|NEW               |SectionId       |die ID der aktuellen Section                   |
 |WB_URL            |AppUrl          |http: ⁄⁄ example.com/wb/                                                     | |WB_URL            |AppUrl          |http: ⁄⁄ example.com/wb/                                                     |
 |WB_REL            |AppRel          |/wb/                                                                         | |WB_REL            |AppRel          |/wb/                                                                         |
 |WB_PATH           |AppPath         |/var/www/httpdocs/wb/ \\ in Windows alternativ  ('c:/var/www/httpdocs/wb/' | |WB_PATH           |AppPath         |/var/www/httpdocs/wb/ \\ in Windows alternativ  ('c:/var/www/httpdocs/wb/' |
 +|ADMIN_DIRECTORY   |AcpDir          |admin/                                                                       |
 |ADMIN_URL         |AcpUrl          |http: ⁄⁄ example.com/wb/admin/                                               | |ADMIN_URL         |AcpUrl          |http: ⁄⁄ example.com/wb/admin/                                               |
 |ADMIN_REL         |AcpRel          |/wb/admin/                                                                   | |ADMIN_REL         |AcpRel          |/wb/admin/                                                                   |
Zeile 38: Zeile 47:
 |TEMPLATE          |Template        |MyTemplate             | |TEMPLATE          |Template        |MyTemplate             |
 |TEMPLATE_DIR      |TemplateDir     |templates/MyTemplate/  | |TEMPLATE_DIR      |TemplateDir     |templates/MyTemplate/  |
-|{neu eingeführt}  |TemplateUrl     |http: ⁄⁄ example.com/wb/templates/MyTemplate/ +|NEW               |TemplateUrl     |http: ⁄⁄ example.com/wb/templates/MyTemplate/ 
-|{neu eingeführt}  |TemplateRel     |/wb/templates/MyTemplate/ +|NEW               |TemplateRel     |/wb/templates/MyTemplate/ 
-|{neu eingeführt}  |TemplatePath    |/var/www/httpdocs/wb/templates/MyTemplate/  +|NEW               |TemplatePath    |/var/www/httpdocs/wb/templates/MyTemplate/  |
-|ADMIN_DIRECTORY   |AcpDir          |admin/                                                                       |+
 |PAGES_DIRECTORY   |PagesDir        |pages/                                                                       | |PAGES_DIRECTORY   |PagesDir        |pages/                                                                       |
 |MEDIA_DIRECTORY   |MediaDir        |media/                                                                       | |MEDIA_DIRECTORY   |MediaDir        |media/                                                                       |
Zeile 47: Zeile 55:
 |WB_REVISION       |AppRevision     |2060                                                                         | |WB_REVISION       |AppRevision     |2060                                                                         |
 |WB_SP             |AppServicePack  |SP1                                                                          | |WB_SP             |AppServicePack  |SP1                                                                          |
-|{neu eingeführt}  |AppName         |WebsiteBaker                                                                 |+|NEW               |AppName         |WebsiteBaker                                                                 |
 |STRING_DIR_MODE   |DirModeString   | %%rwxrwxr-x%%   (textuelle Darstellung, entspricht 0775 Oktal)                                                           | |STRING_DIR_MODE   |DirModeString   | %%rwxrwxr-x%%   (textuelle Darstellung, entspricht 0775 Oktal)                                                           |
 |OCTAL_DIR_MODE    |DirModeOctal    | %%509%% (gespeicherter Integer, entspricht 0775 Oktal)  | |OCTAL_DIR_MODE    |DirModeOctal    | %%509%% (gespeicherter Integer, entspricht 0775 Oktal)  |
Zeile 59: Zeile 67:
  
 Unabhängig von den geänderten Präfixes gelten folgende Regeln für Endungen: Unabhängig von den geänderten Präfixes gelten folgende Regeln für Endungen:
-  * xxx**Url** beinhaltet grundsätzlich eine vollwertige URL mit Protokollangabe+  * xxx**Url** beinhaltet grundsätzlich eine vollwertige URL mit Protokollangabe. Eine URL endet **immer** mit einem Slash ** / ** ohne einen Dateinamen 
   * xxx**Path** beinhaltet einen vollwertigen Pfad ausgehend vom Wurzelverzeichnis des physikalischen Dateisystems und beginnt **immer** mit einem Slash** / ** bzw. **c:/** unter Windows.   * xxx**Path** beinhaltet einen vollwertigen Pfad ausgehend vom Wurzelverzeichnis des physikalischen Dateisystems und beginnt **immer** mit einem Slash** / ** bzw. **c:/** unter Windows.
-  * xxx**Rel** beinhaltet einen absoluten Pfad, ausgehend von DOCUMENT_ROOT des Webservers und beginnt **immer** mit einem Slash** / **+  * xxx**Rel** beinhaltet einen absoluten Pfad, ausgehend von DOCUMENT_ROOT und beginnt **immer** mit einem Slash** / **
   * xxx**Dir** beinhaltet ein oder mehrere aufeinanderfolgende Verzeichnisnamen, und darf **nicht** mit einem Slash** / ** beginnen.   * xxx**Dir** beinhaltet ein oder mehrere aufeinanderfolgende Verzeichnisnamen, und darf **nicht** mit einem Slash** / ** beginnen.
 __Für alle Angaben gemeinsam gilt:__ __Für alle Angaben gemeinsam gilt:__
 +  * Als PATH_SEPERATOR ist ausschließlich der Slash** / ** zugelassen. Anpassungen können problemlos erfolgen mit\\ <code> $sPath = str_replace('\\', '/', $sPath); </code>
   * Ist das letzte Element einer URL-,Rel-, Path-, oder Dir-Angabe ein Verzeichnis, so **muss** die Angabe mit einem Slash** / ** enden.\\   * Ist das letzte Element einer URL-,Rel-, Path-, oder Dir-Angabe ein Verzeichnis, so **muss** die Angabe mit einem Slash** / ** enden.\\
-  * Als PATH_SEPERATOR ist ausschließlich der Slash** / ** zugelassen. Anpassungen können problemlos mit <php> $sPath = str_replace('\\', '/', $sPath); </php>  erfolgen. +  * Um sicher zu stellen, dass ein Verzeichnis mit einem einzelnen Slash** / **abgeschlossen wird genügt die kurze Sequenz\\ <code> $sPath = rtrim($sPath, '/').'/'; </code
-  * Um sicher zu stellen, dass ein Verzeichnis mit einem einzelnen Slash** / **abgeschlossen wird genügt die kurze Sequenz <php> $sPath = rtrim($sPath, '/').'/'; </php+  * Führende Slashes** / **werden entfernt mit\\ <code>  $sPath = ltrim($sPath, '/');  </code>
-  * Um führende Slashes** / **zu entfernen genügt die Sequenz <php>  $sPath = ltrim($sPath, '/');  </php>+
  
 ALT => NEU Beispiele: ALT => NEU Beispiele:
Zeile 82: Zeile 90:
  
 ===== Anwendung von WbAdaptor ===== ===== Anwendung von WbAdaptor =====
-Diese Klasse ist von überall zu erreichen. Es genügt völlig, die einzig existierende, aktive Instanz der Klasse mit\\ <php> $oReg = WbAdaptor::getInstance(); </php> in den aktuellen Sichtbarkeitsbereich zu importieren.+Diese Klasse ist von überall zu erreichen. Es genügt völlig, die einzig existierende, aktive Instanz der Klasse mit\\ <code> $oReg = \bin\WbAdaptor::getInstance();</code> in den aktuellen Sichtbarkeitsbereich zu importieren. Noch besser ist jedoch die Nutzung von Dependency-Injection, also die Übergabe der Instanz von außen an die Funktion oder Klasse.
  
 :!: Es wird dringend empfohlen, den Bezeichner //**$oReg**// für die Instanz des WbAdaptor-Objektes zu verwenden um eine leichtere und über alle Programmteile durchgängige Lesbarkeit zu erreichen. :!: Es wird dringend empfohlen, den Bezeichner //**$oReg**// für die Instanz des WbAdaptor-Objektes zu verwenden um eine leichtere und über alle Programmteile durchgängige Lesbarkeit zu erreichen.
  
 Auch der Abruf der einzelnen Werte ist recht unproblematisch:\\ Auch der Abruf der einzelnen Werte ist recht unproblematisch:\\
-<php> echo $oReg->TemplateDir.'images/logo.png'; </php> \\+<code> echo $oReg->TemplateDir.'images/logo.png'; </code> \\
 Ausgabe:  ''templates/myTemplate/images/logo.png'' Ausgabe:  ''templates/myTemplate/images/logo.png''
  
dev/284/registry.1415349363.txt.gz · Zuletzt geändert: 03.06.2015 15:51 (Externe Bearbeitung)