Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Katalog der Entwurfsmuster

Jede Abstraktion und jedes Entwurfsmuster des Exponential-6-Stacks, im Quellcode gefunden: 6206 Vorkommen in 29 Kategorien über Kernel, lib und Extensions, mit Datei, Klasse, Beschreibung und Erweiterungspunkt.

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/standards/patterns/README.md

On this page

This page is a translation. Read the English original

Katalog der Entwurfsmuster

Dieser Katalog richtet sich an Entwickler, die Exponential erweitern oder seinen Kernel ändern. Er listet jede Abstraktion auf, die der Code verwendet, wo sie liegt und wie eine neue Implementierung eingehängt wird, damit neuer Code den bereits vorhandenen Mustern folgt, statt neue zu erfinden. Er wird aus dem Quellcode generiert und ist daher für den Code, aus dem er gebaut wurde, vollständig und aktuell; die Regeln, die jedes Muster erkennen, sind heuristisch und werden weiter unten erklärt.

Lauffähige Beispiele für die meisten dieser Erweiterungspunkte: Beispiele und das Kochbuch.

Die Regeln, denen der Code folgt: Standards und Architektur des Kernels.

In Zahlen

Vorkommen (alle Kategorien)6206
Klassen, Interfaces, Traits und Enums3516 (3419 Klassen, 96 Interfaces, 1 Trait)
... mit mindestens einem Muster2871
Modulansichten532
Richtlinienfunktionen260
Fetch-Funktionen316
Template-Operatoren255
Cronjob-Teile49
Event-Hooks99
INI-Plugin-Punkte842
Gelesene Quelldateien4512 PHP, 577 INI
Bereiche155

Die Muster

MusterGruppeVorkommenErkannt an
Active Record (eZPersistentObject)Datenzugriff234Erweitert eZPersistentObject, direkt oder über eine Elternklasse.
Datentyp (Strategie für Inhaltsfelder)Plugins54Erweitert eZDataType, direkt oder über eine Elternklasse.
Workflow-Ereignistyp (Befehl, Plugin)Plugins15Erweitert eZWorkflowEventType.
Template-Operator (Interpreter-Plugin)Plugins338Registriert in einer eztemplateautoload.php ($eZTemplateOperatorArray[]) oder hat operatorList() und modify().
Template-Funktion (Interpreter-Plugin)Plugins45Registriert in einer eztemplateautoload.php ($eZTemplateFunctionArray[]) oder hat functionList() und process().
Fetch-Funktion (Query Object, Fassade)Plugins354Ein Eintrag in der function_definition.php eines Moduls oder eine Klasse namens *FunctionCollection.
Modulansicht (Page Controller)Anfrageverarbeitung993Ein Eintrag von $ViewList in einer module.php oder eine Klasse, die ModuleView oder Page erweitert (die ausführbare Form einer Ansicht).
Richtlinienfunktion (Zugriffskontrolle)Anfrageverarbeitung260Ein Eintrag von $FunctionList in einer module.php.
Front ControllerAnfrageverarbeitung10Die Kernel-Klassen ezpKernel, ezpKernelWeb, ezpKernelTreeMenu, ezpKernelRest, eZModule und verwandte.
Befehl (Konsole, Skripte, Cronjobs)Anfrageverarbeitung247Erweitert Command, CronjobPart oder Runnable (die ausführbaren Konsolenbefehle und Cronjob-Teile) oder eine Datei cronjobs/*.php.
Singleton / instance()Erzeugung77Hat eine statische Methode instance() oder getInstance().
Fabrik und statische FabrikmethodenErzeugung443Klassenname endet auf Factory oder hat statische Methoden create(), from(), factory(), make*() oder erzeugt new self/new static in einer statischen Methode.
BuilderErzeugung10Klassenname enthält Builder oder Generator.
RegistryStruktur39Klassenname enthält Registry oder hat statische Methoden register*().
Strategie / HandlerVerhalten382Klassenname endet auf Handler, Backend, Driver, Transport, Engine oder Strategy oder implementiert ein Interface, dessen Name so endet.
Schablonenmethode / abstrakte BasisklasseVerhalten69Eine abstrakte Klasse mit abstrakten und konkreten Methoden.
Schnittstelle (Vertrag)Struktur96Jedes Interface.
Beobachter / Listener / EreignisVerhalten10Klassenname enthält Listener, Observer oder Subscriber oder hat Methoden attach()/notify()/addListener(); jeder Aufruf von ezpEvent notify()/filter() (siehe die Seite zu den Hooks).
Ereignis-Hook (ezpEvent)Verhalten99Ein Aufruf von ezpEvent::getInstance()-›notify( 'EVENT' ) oder -›filter( 'EVENT' ).
Adapter / Bridge / WrapperStruktur6Klassenname enthält Adapter, Bridge, Wrapper oder Proxy.
Fassade / DienstStruktur40Klassenname endet auf Facade, Service, Manager, API oder Api.
Dekorierer / FilterStruktur64Klassenname enthält Decorator oder Filter.
Zuständigkeitskette (Chain of Responsibility)Verhalten19Klassenname enthält LoginHandler, Chain, Pipeline, Middleware, Router oder Matcher.
IteratorVerhalten16Implementiert Iterator, IteratorAggregate oder ArrayAccess.
Wertobjekt / StrukturStruktur106Klassenname endet auf Struct, Value, Result, Item, Info oder Definition und die Klasse hat wenige Methoden, oder sie erweitert ezcBaseStruct.
AusnahmehierarchieStruktur73Erweitert Exception, eine Klasse *Exception oder Error.
Trait (Mixin)Struktur1Jeder Trait.
Hilfsklasse (statische Hilfsfunktionen)Struktur730Eine konkrete Klasse, deren Methoden alle statisch sind (mindestens zwei).
INI-Plugin-Punkt (Erweiterungspunkt)Plugins1376Eine Einstellung einer Datei settings/*.ini (oder der einer Extension), deren Wert der Name einer Klasse des Katalogs ist.

Die Bereiche

Eine Seite pro Teil der Codebasis: jede Klasse mit ihren Mustern und die dort definierten Ansichten, Funktionen, Operatoren und Plugin-Punkte.

BereichKlassenAnsichtenFetch-FunktionenOperatorenPlugin-Punkte
extension/AdminAid160018
extension/autorss20000
extension/bccie4850044
extension/bcgooglesitemaps41000
extension/bcwebsitestatistics40060
extension/birthday40001
extension/cjw_newsletter19757161321
extension/cjw_themes_jumper62002
extension/cjw_tmv70401
extension/enhancedezbinaryfile30010
extension/enhancedselection260001
extension/expai186912669
extension/expchangeclass73103
extension/exphelpsite10000
extension/expimageeditor51100
extension/explayouts15099085
extension/explayouts_api100000
extension/explayouts_content_browser40000
extension/explayouts_content_browser_core30001
extension/explayouts_content_browser_ui21000
extension/explayouts_core130001
extension/explayouts_relation_list_query40000
extension/explayouts_site_api60000
extension/explayouts_standard230000
extension/explayouts_tags_query20000
extension/explayouts_ui2014010
extension/explayouts_ui_api64000
extension/expquery_translator530000
extension/expqueue275005
extension/expservices7800069
extension/expsite_api70000
extension/expsite_app20000
extension/expsite_core40000
extension/expsite_data_media20000
extension/expsite_installer20000
extension/expui40011
extension/exp_adminui10000
extension/exp_enhanced_link30000
extension/exp_oe_tiptap141003
extension/ezauthorize52000
extension/ezautosave20001
extension/ezdemo50060
extension/ezfind513728
extension/ezflow288656
extension/ezformtoken10000
extension/ezgmaplocation40001
extension/ezie3213000
extension/ezjscore21301211
extension/ezmbpaex42000
extension/ezmultiupload82300
extension/ezodf39110014
extension/ezoe268017
extension/ezoracle80003
extension/ezownerchange51001
extension/ezpaypal41000
extension/ezpm512400
extension/ezpostgresqlcluster20000
extension/ezprestapi90002
extension/ezprestapiprovider20002
extension/ezssp20000
extension/ezstarrating80032
extension/eztags3217957
extension/ezupdate170000
extension/ezurlmultisite800134
extension/ezwebin10060
extension/ezwt51011
extension/git_manager230001
extension/hcaptcha50000
extension/ngclasslist20000
extension/nxc_powercontent6405600
extension/owsimpleoperator50000
extension/powercontent31000
extension/recaptcha40000
extension/sevenx_authentication_2fa214001
extension/sevenx_dse530000
extension/sevenx_themes_media72003
extension/sevenx_themes_simple100016
extension/sevenx_themes_super10000
extension/sqliimport2032030135
extension/str_replace20010
extension/swark430000
extension/syndication3413001
extension/xrowextract9492035
extension/xrowmetadata382071
kernel/classes2170000
kernel/classes/apikey30000
kernel/classes/audit540000
kernel/classes/basketinfohandlers10000
kernel/classes/binaryhandlers10000
kernel/classes/classicmenu20000
kernel/classes/clusterfilehandlers20000
kernel/classes/collaborationhandlers10000
kernel/classes/confirmorderhandlers10000
kernel/classes/contentcheck130000
kernel/classes/contentfinder30000
kernel/classes/contentjob200000
kernel/classes/datatable190000
kernel/classes/datatypes810000
kernel/classes/debugbar80000
kernel/classes/help570000
kernel/classes/i18n10000
kernel/classes/ini320000
kernel/classes/logviewer190000
kernel/classes/mail10000
kernel/classes/mailpreferences180000
kernel/classes/notification190000
kernel/classes/packagecreators40000
kernel/classes/packagehandlers70000
kernel/classes/packageinstallers20000
kernel/classes/passkey50000
kernel/classes/pdfexport40000
kernel/classes/reauth50000
kernel/classes/requestclassifier120000
kernel/classes/requestlog10000
kernel/classes/role30000
kernel/classes/secrets30000
kernel/classes/shopaccounthandlers40000
kernel/classes/subitems240000
kernel/classes/syscard250000
kernel/classes/transfer100000
kernel/classes/uiswitch60000
kernel/classes/user140000
kernel/classes/vathandlers10000
kernel/classes/webauthn40000
kernel/classes/workflowtypes110000
kernel/common2600480
kernel/modules7823118200
kernel/private1818110
kernel/private/classes/asynchronouspublisheroutput20000
kernel/private/classes/clusterfilehandlers140000
kernel/private/classes/commands1050000
kernel/private/classes/cronjobs300000
kernel/private/classes/exceptions140000
kernel/private/classes/httpcache20000
kernel/private/classes/requestrules440000
kernel/private/classes/runnable40000
kernel/private/classes/services80000
kernel/private/classes/urlaliasfilters10000
kernel/private/classes/views2720000
kernel/private/classes/webdav30000
lib20000
lib/ezdb110000
lib/ezdbschema80000
lib/ezdiff100000
lib/ezfile130000
lib/ezi18n220000
lib/ezimage160000
lib/ezlocale60000
lib/ezmath20000
lib/ezpdf50010
lib/ezsession60000
lib/ezsoap100000
lib/eztemplate56001150
lib/ezutils470000
settings0000254

Was gelesen wurde

Die von Git verfolgten PHP- und INI-Dateien unterhalb von kernel/, lib/ und extension/ des Exponential-Repositorys (ohne Tests und vendor/-Verzeichnisse) sowie diese Extensions:

ExtensionQuelle
AdminAideigenes Repository
autorssComposer-Paket
bccieComposer-Paket
bcgooglesitemapsComposer-Paket
bcwebsitestatisticsComposer-Paket
birthdayComposer-Paket
cjw_newsletterComposer-Paket
cjw_themes_jumpereigenes Repository
cjw_tmveigenes Repository
enhancedezbinaryfileComposer-Paket
enhancedselection2Composer-Paket
exp_adminuieigenes Repository
exp_enhanced_linkComposer-Paket
exp_oe_tiptapeigenes Repository
expaieigenes Repository
expchangeclasseigenes Repository
exphelpsitemit dem Kernel ausgeliefert
expimageeditormit dem Kernel ausgeliefert
explayoutseigenes Repository
explayouts_apieigenes Repository
explayouts_content_browsereigenes Repository
explayouts_content_browser_coreeigenes Repository
explayouts_content_browser_uieigenes Repository
explayouts_coreeigenes Repository
explayouts_relation_list_queryeigenes Repository
explayouts_site_apieigenes Repository
explayouts_standardeigenes Repository
explayouts_tags_queryeigenes Repository
explayouts_uieigenes Repository
explayouts_ui_apieigenes Repository
expquery_translatoreigenes Repository
expqueueeigenes Repository
expservicesmit dem Kernel ausgeliefert
expsite_apieigenes Repository
expsite_appeigenes Repository
expsite_coreeigenes Repository
expsite_data_mediaeigenes Repository
expsite_installereigenes Repository
expuieigenes Repository
ezauthorizeComposer-Paket
ezautosaveComposer-Paket
ezdemoComposer-Paket
ezfindeigenes Repository
ezflowComposer-Paket
ezformtokenmit dem Kernel ausgeliefert
ezgmaplocationComposer-Paket
ezieComposer-Paket
ezjscoremit dem Kernel ausgeliefert
ezmbpaexComposer-Paket
ezmultiuploadComposer-Paket
ezodfComposer-Paket
ezoemit dem Kernel ausgeliefert
ezoracleeigenes Repository
ezownerchangeeigenes Repository
ezpaypalComposer-Paket
ezpmComposer-Paket
ezpostgresqlclusterComposer-Paket
ezprestapiComposer-Paket
ezprestapiproviderComposer-Paket
ezsspComposer-Paket
ezstarratingComposer-Paket
eztagsComposer-Paket
ezupdateComposer-Paket
ezurlmultisiteeigenes Repository
ezwebinComposer-Paket
ezwtComposer-Paket
git_managerComposer-Paket
hcaptchaComposer-Paket
ngclasslistComposer-Paket
nxc_powercontentComposer-Paket
owsimpleoperatorComposer-Paket
powercontenteigenes Repository
recaptchaComposer-Paket
sevenx_authentication_2faeigenes Repository
sevenx_dseeigenes Repository
sevenx_themes_mediaeigenes Repository
sevenx_themes_simpleComposer-Paket
sevenx_themes_superComposer-Paket
sqliimporteigenes Repository
str_replaceComposer-Paket
swarkComposer-Paket
syndicationComposer-Paket
xrowextractComposer-Paket
xrowmetadataComposer-Paket

Eine Extension wird gelesen, wenn sie ein eigenes Git-Repository unterhalb von extension/ ist, dessen Origin ein Repository von se7enxweb ist, oder ein dort installiertes Composer-Paket von se7enxweb; private Extensions und Website-Einstellungen werden nie gelesen. Eine Website mit weiteren installierten Extensions erhält einen größeren Katalog, wenn sie den Generator ausführt.

Wie der Katalog gebaut wird

Ausführen im Wurzelverzeichnis der Installation (keine Datenbank, nichts wird geladen oder ausgeführt; der Tokenizer von PHP liest die Dateien):

php bin/php/exppatterncatalogue.php            # report which pages would change
php bin/php/exppatterncatalogue.php --write    # write doc/eng-us/standards/patterns/
php bin/php/exppatterncatalogue.php --check    # exit 1 when the pages are out of date

Die Ausgabe hängt nur vom Quellcode ab: keine Datumsangaben, keine Commit-IDs, alles sortiert, sodass ein zweiter Lauf auf demselben Code dieselben Bytes schreibt. Committen Sie die Seiten mit der Code-Änderung, die sie verändert.

Jede Kategorie hat eine Regel (die Tabelle oben und die Seite jedes Musters). Eine Klasse kann zu mehreren Kategorien passen. Die Regeln verwenden den Namen der Klasse, ihre Elternklassen und Interfaces (durch die gesamte Codebasis verfolgt), ihre Methoden (statisch, abstrakt) und die Registrierungsdateien des Kernels: module.php (Ansichten und Richtlinienfunktionen), function_definition.php (Fetch-Funktionen), eztemplateautoload.php (Template-Operatoren und -Funktionen), Verzeichnisse cronjobs/, Aufrufe von ezpEvent und INI-Einstellungen, deren Wert ein Klassenname ist. Namen sind eine Heuristik: Eine Klasse namens ...Manager wird als Facade oder Service geführt, auch wenn sie etwas anderes ist, und ein Muster, das ohne die üblichen Namen umgesetzt ist, wird übersehen. Die Beschreibungen sind der erste Satz des Doc-Kommentars jeder Klasse.

Hinweis Der Katalog beschreibt den Code, wie er ist, einschließlich geerbten Codes. Er ist keine Liste von Empfehlungen: Folgen Sie für neuen Code den Regeln zu Schichten und Benennung.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x