Standards
Dieser Abschnitt ist für Entwickler, die auf Exponential aufbauen, und für Administratoren und Entscheider, die sagen müssen, welche Standards eine Website erfüllt. Er beantwortet drei Fragen: welchen veröffentlichten Standards Exponential folgt und wie weit es jeden davon erfüllt, welchen Architekturregeln sein Code folgt und welche Entwurfsmuster der Code verwendet und wo.
Jede Seite nennt den Code, die Einstellungen, Tests oder Jobs der kontinuierlichen Integration, die ihre Aussagen stützen. Wo sich eine Aussage nicht prüfen ließ, sagt die Seite Nicht geprüft; wo Exponential etwas nicht erfüllt, sagt die Seite das und nennt die Lücke. Die Konformität einer Website hängt auch von ihren eigenen Templates, Inhalten und ihrem Betrieb ab: Die Software kann Konformität möglich machen, aber eine Website muss sie halten.
Wie Sie den Status lesen
| Status | Bedeutung |
|---|---|
| Erfüllt | Die Anforderung wird von der Software im ausgelieferten Zustand erfüllt, und die Seite nennt den Nachweis. |
| Teilweise erfüllt | Einige Anforderungen werden erfüllt, andere nicht oder nur in manchen Teilen (zum Beispiel die Administrationsoberfläche, aber nicht jedes öffentliche Design). |
| Nicht erfüllt | Die Software erfüllt sie nicht; die Seite sagt, was fehlt. |
| Nicht anwendbar | Der Standard gilt nicht für das, was Exponential tut. |
| Nicht geprüft | Es wurde kein Nachweis in die eine oder andere Richtung gefunden; nichts wird behauptet. |
Standards, denen Exponential folgt
| Bereich | Seite | Behandelte Standards |
|---|---|---|
| Barrierefreiheit | Barrierefreiheit | WCAG 2.2 AA, WAI-ARIA 1.2, EN 301 549 |
| Sicherheit | Sicherheit | OWASP Top 10, OWASP ASVS, Content Security Policy Level 3, OWASP Cheat Sheets |
| Datenschutz | Datenschutz | DSGVO, ePrivacy (Cookies), Einwilligung und Abmeldung |
| Die Webplattform | Webplattform | HTTP-Semantik und Caching, HTTP/2, TLS, HTML, CSS, ECMAScript, URLs, Cookies, Feeds, Sitemaps |
| Sprachen | Internationalisierung | Unicode und UTF-8, CLDR und ICU, BCP 47 und ISO-Sprachcodes, Rechts-nach-links und Bidi, Zeitzonen |
| PHP | PHP und Composer | Unterstützte PHP-Versionen, PSRs von PHP-FIG, Composer, Semantic Versioning |
| Codestil | Programmierstandards | Das Regelwerk von phpcs, PHPStan, Dateiköpfe, Benennung, Regeln für CSS und JavaScript |
| Code-Präfixe | Namenspräfixe: sevenx und exp | sevenx als offizielles öffentliches PHP-Code-Präfix von 7x, exp für Arbeit, die dem Projekt Exponential und der Exponential Foundation zugeordnet ist |
| Tests | Tests und kontinuierliche Integration | PHPUnit, die Testkarte, die CI-Workflows und die Prüfungen vor einem Push |
| Historie | Versionsverwaltung und Releases | Git-Konventionen, Commit-Nachrichten, Changelogs, Tags und Versionsnummern |
| Geplante Änderungen | Geplante Änderungen mit OpenSpec | OpenSpec: Vorschlag, Specs, Entwurf, Aufgaben, Plan, Umsetzung und Prüfung einer größeren Änderung |
| Dokumentation | Dokumentation und Veröffentlichung | DITA 1.3, CommonMark und GFM, GNU FDL 1.3, PDF, EPUB 3 und EPUB Accessibility |
| Schnittstellen | APIs und Protokolle | OAuth 2.0 und OpenID Connect, REST und JSON, WebDAV, SOAP, Feeds, Mail, LDAP |
| Datenbanken | Datenbanken und SQL | SQL und der Dialekt jeder unterstützten Datenbank, die Datenbankabstraktion |
Architektur
| Seite | Was sie behandelt |
|---|---|
| Kernel-Architektur | Der Lebenszyklus einer Anfrage, Module, Ansichten und Funktionen, Richtlinien, Datentypen, persistente Objekte, Einstellungen und Siteaccesses, Designs und Überschreibungen, Templates, Extensions, Caches, Workflows, Cronjobs, die Datenbankschicht und der Anwendungsserver Velocity |
| Regeln zu Schichten und Benennung | Welche Schicht welche verwenden darf und wie neue Klassen, Module, Templates, Einstellungen und Befehle benannt werden |
| Kompatibilität, Releases und Deployment | Die Richtlinie zur Abwärtskompatibilität, Versionsnummern und Releases und wie eine Änderung ausgebracht wird |
Entwurfsmuster
Der Katalog der Entwurfsmuster führt jede Abstraktion des Stacks von Exponential 6 auf: Fabriken,
Singletons, Registries, Handler und Strategien, abstrakte Basisklassen, Beobachter und Ereignis-Hooks, Adapter und
Fassaden, persistente Objekte, Datentypen, Template-Operatoren, Fetch-Funktionen, Modulansichten,
Richtlinienfunktionen, Workflow-Ereignisse, Cronjob-Teile und die INI-Einstellungen, über die Klassen eingesteckt
werden, jeweils mit Datei, Klasse, Beschreibung und Erweiterungspunkt. Er wird aus dem Quellcode erzeugt und lässt sich
jederzeit mit php bin/php/exppatterncatalogue.php --write neu erstellen.
Verwandt
- Vorlage für den Kopf von Quelldateien (übernommen, 4.1): der Lizenzkopf, mit dem jede PHP-Datei der Codebasis 4.x begann, als Historie aufbewahrt. Neue Dateien verwenden den in Programmierstandards beschriebenen Kopf.
- Checklisten zu Barrierefreiheit, Sicherheit und Konformität für Projektleiter und Einkäufer
- Die Lizenz dieser Dokumentation
- Sicherheitshärtung, Datenbankunterstützung und Unterstützung von Betriebssystemen für die Sicht des Betreibers auf dieselben Themen.