User Tools

Site Tools


en:dev:all:wb-adaption

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
en:dev:all:wb-adaption [13.06.2015 15:34] – [Namens-Konventionen] translated headline mrbasemanen:dev:all:wb-adaption [13.06.2015 16:27] – [Verzeichnise] translated - btw. the previous edit was translation of the file names section mrbaseman
Line 29: Line 29:
 ===== Naming conventions ===== ===== Naming conventions =====
  
-==== Allgemeines ====+==== General ====
  
-WebsiteBaker übernimmt auch hier weitgehendst die PSR in einer an die Besonderheiten von WB angepassten FormDie wichtigste Abweichung findet sich im Aufbau der Suchpfade für die Dateien. In späteren Versionen wird auch hier eine weitere Annäherung an PSR erfolgen+Website Baker largely adopts the PSR here as well, in a version slightly adapted to the specific requirements WB. The main difference is found in the structure of the search paths for the files. In later versions also here a further approximation to PSR will take place
-<blockquote>{{:info.png?nolink&32 |Hinweis}} +<blockquote>{{:info.png?nolink&32 |Note}} 
-**Hinweis:** +**Note:** 
-Die strikte Einhaltung dieser Konventionen ist zwingend erforderlich, damit es bei verschiedenen Modulen keine Namensgleichheiten von Klassen und Funktionen/Methoden geben kannDer Core ist dadurch in der Lage, die Position der Klassendateien anhand der Klassennamen eindeutig zu bestimmen, um sie durch den auf WB optimierten Autoloader nachzuladenEine explizite Einbindung der Klassendateien per include() oder require() wird dadurch überflüssig.  +Strict compliance with these conventions is imperative so that there can be no homonyms of classes and functions methods in different modulesThe core is thus able to clearly determine the location of the class file based on the class name to reload them using the autoloader optimized on WB. An explicit inclusion of the class files via include () or require () is superfluous
-</blockquote>WebsiteBaker ab v2.8.4 erfordert PHP 5.4.x als MindestvoraussetzungFür eine Übergangszeit sind noch verschiedene Namenskonventionen für Klassen zulässigDas erklärte Ziel ist jedoch die durchgängige Umstellung auf Namespaces um deren Vorteile zu nutzen und auch den Benennungsaufwand bei Klassen deutlich reduzieren zu können+</blockquote>Website Baker from v2.8.4 on requires PHP 5.4.x as a minimum requirementFor a transitional period different naming conventions for classes are permittedHowever, the stated objective is to convert entirely to namespaces to utilize their advantages and also to reduce the cost significantly when naming classes
-==== Klassen ==== +==== Classes ==== 
-Klassennamen müssen in **StudlyCaps** (auch //**UpperCamelCase**// genanntdeklariert werden und müssen folgender RegEx-Regel entsprechen: '/[A-Z][a-zA-Z0-9]+/'Nummern sind in Klassennamen gestattetsollten jedoch auf das Notwendigste beschränkt werden und keine Verwechslungsgefahr mit Buchstaben bergenBesteht der Klassenname aus mehr als einem Wortso ist der jeweils erste Buchstabe eines Wortes groß zu schreibenMehrere aufeinanderfolgende Großbuchstaben sind nicht erlaubtBeispiel anhand eines Namens+Class names must be declared in **StudlyCaps** (also called //**UpperCamelCase**//and correspond to the following RegEx rule '/[A-Z][a-zA-Z0-9]+/'Numbers are permitted in class namesbut should be limited to what is necessary and do not pose any risk of confusion with lettersIf the class name consists of more than one wordthe respective first letter of a word has to be in uppercaseSeveral consecutive uppercase letters are not allowedExample based on a name
-^Bezeichner ^ Status | +^Identifier ^ Status | 
-|smtp_mailer | [color=red]falsch[/color] | +|smtp_mailer | [color=red]wrong[/color] | 
-|Smtp_Mailer | [color=red]falsch[/color] | +|Smtp_Mailer | [color=red]wrong[/color] | 
-|SMTPmailer | [color=red]falsch[/color] | +|SMTPmailer | [color=red]wrong[/color] | 
-|SmtpMailer | [color=green]richtig[/color] |+|SmtpMailer | [color=green]correct[/color] |
  
-==== Abstrakte Klassen und Interfaces ==== +==== Abstract classes and interfaces ==== 
-Generell folgen abstrakte Klassen und Interfaces der gleichen Konvention wie Klassenmit einer zusätzlichen RegelDie Namen von abstrakten Klassen und Interfaces sollten mit dem Term "**Abstract**" bzw. "**Interface**" endenund dem Term darf kein Unterstrich vorangestellt seinAls Beispiel wird //**Plugin_Abstract**// als ungültig angenommenaber **PluginAbstract** oder **m_MyModul_PluginAbstract** wären gültige Namen.+In generalabstract classes and interfaces follow the same conventions as classes, with an additional ruleThe names of abstract classes and interfaces should end with the term "**Abstract**" or "**Interface**", and the term must not be preceded by an underscoreAs an example //**Plugin_Abstract**// is considered invalidbut **PluginAbstract** or **m_MyModul_PluginAbstract** would be valid names.
  
-==== Emulierte Namespaces ==== +==== Emulated namespaces ==== 
-In diesem Modus ist in Klassennamen zusätzlich der Unterstrich '_' als Sonder-/Funktionszeichen gestattetEr dient jedoch ausschließlich als Pfadseperator. Klassennamen bestehen hier nicht allein aus dem bis jetzt definierten Namensondern müssen zusätzlich noch genau definierte Präfixes enthaltenNur dann ist es möglichaus dem Klassennamen den exakten Dateinamen zu ermitteln, so dass die passende Datei bei einem Zugriff auf eine Klasse automatisch geladen(included) werden kann.+In this mode in class names the underscore '_' is permitted additionally as special/functional characterHoweverit is intended solely as path separatorClass names in this context do not only consist of the name defined so farbut they must also contain a well-defined prefix. Only then it is possible to find the correct file out of the class name, so that the appropriate file can be loaded automatically (included) when accessing a class.
  
-Die Klassenbibliotheken von WebsiteBaker sind in mehrere Gruppen aufgeteilt:\\ +The class libraries of WebsiteBaker are divided into several groups:\\ 
-**Klassen des Kerns**:  sind im Verzeichnis **''wb/framework/''** oder einem seiner Unterverzeichnisse zu findenHierfür ist kein Prefix erforderlich.\\ +**The core classes**: reside in the directory **''wb/framework/''** or one of its subdirectoriesFor these no prefix is needed at all.\\ 
-**Klassen der Module**: Klassen der Module im jeweiligen Modulverzeichnis **''wb/modules/%modul_name%/''** oder einem seiner UnterverzeichnisseDer Bezeichner muss zwingend den Prefix  '**m_**' erhalten. **Beispiel:** m_MyModule_PluginInterface \\ +**Classes of modules**: classes of modules in the appropriate module directory **''wb/modules/%module_name%/''** or one of its subdirectoriesThe identifier must necessarily get the prefix '**m_**'. **Example:** m_MyModule_PluginInterface \\ 
-**Klassen des ACP**: (AdminControlPanel => ehem. Backendsind im Verzeichnis **''wb/admin/''** oder einem seiner Unterverzeichnisse zu findenDer KlassenBezeichner muss zwingend den Prefix '**a_**' erhalten. **Beispiel:** a_Pages_PageTree\\ +**Classes of ACP**: (AdminControlPanel => Former backendare located in the directory **''wb/admin/''** or one of its subdirectoriesThe ClassIdentifier must necessarily get the prefix '**a_**'. **Example:** a_Pages_PageTree\\ 
-**Klassen der third-party libraries**: die im Verzeichniss **''wb/include/''** sowie seinen Unterverzeichnissen liegen, werden vom Autoloader nicht automatisch erfasstJede Library hat jedoch die Möglichkeiteine eigene Registrierung im SPL-Autoloaderstack vorzunehmenMehr dazu in der Beschreibung des Autoloaders der jeweiligen WB-Version.+**Classes of third-party libraries**: lying in the directory **''wb/include/''** and its subdirectories are not automatically covered by the autoloaderHowevereach library has the ability to carry out its own registration in the SPL autoloader stackMore on this can be found in the description of the autoloader the respective WB version. 
 +==== Filenames ==== 
 +As far as the above-mentioned rules for class names have been complied with, the filename would clearly result from the class name. The class **m_MyModul_PluginAbstract** accordingly can be found in the file **''wb/modules/MyModul/PluginAbstract.php''**.\\ 
 +For all other files, only alphanumeric characters and the dash (**-**) are allowed. Spaces are strictly prohibited.\\ 
 +Each file which contains executable PHP code should end with the extension **.php** and be carried out in UpperCamelCase. 
 + 
 +==== Directories ==== 
 +For naming directories the same basis as for files apply. Only alphanumeric characters and a few special characters of standard 7-bit ASCII range <128 (**[color=blue] ! # - . @ ~ [/color]**) are allowed. As with file names, spaces, and the underscore are prohibited.
  
-==== Dateinamen ==== 
-Soweit die vorgenannten Regeln für Klassennamen eingehalten wurden, ergeben sich die Dateinamen eindeutig aus den Klassennamen. Die Klasse **m_MyModul_PluginAbstract** findet sich demnach in der Datei **''wb/modules/MyModul/PluginAbstract.php''**.\\ 
-Für alle anderen Dateien sind nur alphanummerische Zeichen und der Bindestrich (**-**) gestattet. Leerzeichen sind völlig verboten.\\ 
-Jede Datei, die ausführbaren PHP Code enthält sollte mit der Endung **.php** enden und in UpperCamelCase-Schreibweise ausgeführt sein. 
-==== Verzeichnise ==== 
-Zur Benennung von Verzeichnissen gelten die selben Grundlagen wie für Dateien. Es sind nur alphanummerische Zeichen sowie nur wenige Sonderzeichen des Standard 7-Bit-ASCII Bereiches <128 (**[color=blue] ! # - . @ ~ [/color]**) zulässig. Wie bei Dateinamen, sind Leerzeichen und der Unterstrich grundsätzlich verboten.  
 ==== Funktionen und Methoden ==== ==== Funktionen und Methoden ====
  
en/dev/all/wb-adaption.txt · Last modified: 13.06.2015 16:39 by mrbaseman