Eine übliche Konvention für Namespaces in PHP ist es, mit Vendor\Package
zu beginnen, groß geschrieben (CamelCase StudlyCaps) mit “vendor” und “package” analog zum Composer Package Namen.
Es gibt allerdings eine schlechte Angewohnheit, die ich häufig sehe, vermutlich aus alten ZF1 und Pear Tagen, wo jedes Wort im Klassennamen ein neuer Sub-Namespace ist (und ein neues Unterverzeichnis), oder Kind-Klassen in einen Namespace mit dem Namen der Elternklasse platziert werden. All das führt zu tief geschachtelten Namespaces und Klassennamen, die keine Bedeutung ohne ihren Namespace haben.
Beispiele aus Zend Framework 1 (Pseudo Namespaces):
Zend_Db_Table_Row_Abstract
ist eine abstrakte Basis-Klasse fürZend_Db_Table_Row
, und repräsentiert eine Zeile in einer Datenbanktabelle. Es gibt auch nochZend_Db_Table
undZend_Db
.Zend_Pdf_FileParser_Font_OpenType_TrueType
ist ein Parser für True Type Schriftdateien. Die Klasse erbt vonZend_Pdf_FileParser_Font_OpenType
, die wiederum vonZend_Pdf_FileParser_Font
erbt, die vonZend_Pdf_FileParser
erbt.
Und ein aktuelles Beispiel aus Magento 2:
Magento\Catalog\Model\Product\Option\Type\File\Validator
– Ein Validator für Produkt-Optionen vom Typ “File”