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

Exponential Components (expcomponents): die Bibliotheken des Kernels, geforkt aus den Zeta Components

Seit 6.0.15 sind die PHP-Bibliotheken, auf denen der Kernel von Exponential aufbaut, die Exponential Components, kurz expcomponents: der eigene Fork der Zeta Components durch Exponential, veröffentlicht als die…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/features/6.0/expcomponents.md

On this page

This page is a translation. Read the English original

Exponential Components (expcomponents): die Bibliotheken des Kernels, geforkt aus den Zeta Components

Seit 6.0.15 sind die PHP-Bibliotheken, auf denen der Kernel von Exponential aufbaut, die Exponential Components, kurz expcomponents: der eigene Fork der Zeta Components durch Exponential, veröffentlicht als die Composer-Pakete se7enxweb/expcomponents-<name>, wie der Code, aus dem sie stammen, unter der Apache License 2.0 lizenziert und gepflegt von 7x und der Exponential Foundation. Die composer.json des Kernels verlangt die Forks anstelle der Ursprungspakete zetacomponents/*. Die Klassen behalten ihre ezc-Namen und ihre APIs, daher ändert sich Code, der sie verwendet, nicht.

Diese Seite ist für alle, die wissen wollen, was diese Bibliotheken sind, woher sie kommen, warum Exponential sie forkt, was gleich bleibt und wo jede einzelne zu finden ist. Was ein Upgrade für eine Installation, eine Erweiterung oder eigenen Code bedeutet, steht in den Upgrade-Hinweisen; was jedes Paket im Kernel tut, Klasse für Klasse, in der Paketreferenz; wie man an einem Fork arbeitet, in der Anleitung Zu expcomponents beitragen.

Inhalt

  1. Kurz gesagt
  2. Was die Komponenten sind
  3. Geschichte: eZ Components, Zeta Components, expcomponents
  4. Warum Exponential sie forkt
  5. Was gleich bleibt
  6. Was sich ändert
  7. Die Pakete
  8. Wie die alten Paketnamen weiter funktionieren: „replace“ in Composer
  9. Die Lizenz
  10. Wo die Repositories und Pakete sind
  11. Versionen und Releases
  12. Fehler melden und mitwirken
  13. Modernisierung: die Absicht
  14. Fragen und Antworten
  15. Verwandte Seiten

Kurz gesagt

FrageAntwort
Was ist es?Der Fork der PHP-Bibliotheken Zeta Components durch Exponential (Archive, Mail, WebDAV, Feeds, MVC-Werkzeuge, die Datenbankschicht und mehr)
Paketnamense7enxweb/expcomponents-<name>, zum Beispiel se7enxweb/expcomponents-mail für zetacomponents/mail
KlassennamenUnverändert: ezcMail, ezcArchive, ezcWebdavServer, ezcBaseFile ...
LizenzApache License 2.0 (Apache-2.0), wie im Original; die Copyright- und Hinweistexte des Originals bleiben erhalten
Wer pflegt sie7x und die Exponential Foundation, öffentlich, auf GitHub unter se7enxweb
Was eine Installation tun mussNichts außer dem üblichen composer update eines Upgrades; siehe die Upgrade-Hinweise
Code Dritter, der zetacomponents/<name> verlangtFunktioniert weiter: Jeder Fork erklärt, dass er den alten Namen ersetzt
Seit6.0.15. Alle Forks wurden am 2026-11-06 veröffentlicht, und der Kernel verlangt sie seitdem; archive und webdav wurden schon einige Tage vorher als Forks verlangt

Was die Komponenten sind

Die Komponenten sind eine Sammlung unabhängiger PHP-Bibliotheken, je ein Composer-Paket, von denen jede eine Aufgabe gut erledigt: tar- und zip-Archive lesen und schreiben, E-Mails erstellen und versenden, WebDAV bereitstellen, RSS- und Atom-Feeds schreiben, HTTP-Anfragen routen und verteilen, Werte zwischenspeichern, über PDO mit einer Datenbank sprechen, Kommandozeilenoptionen auswerten und so weiter. Jedes Paket hat seine eigene Version, seine eigenen Tests und seine eigene Dokumentation; alle teilen sich ein Basispaket (base) mit den Ausnahmeklassen, den Optionsklassen, Dateihilfen und dem ursprünglichen Autoloader.

Jede Klasse jeder Komponente beginnt mit ezc („eZ Components“, der ursprüngliche Name), gefolgt von der Komponente: ezcArchive, ezcMailSmtpTransport, ezcWebdavServer, ezcFeed, ezcMvcController, ezcCacheManager, ezcDbFactory, ezcConsoleInput, ezcBaseFile. Die Bibliotheken verwenden keine PHP-Namensräume; das liegt an ihrem Alter und ist kein Mangel, und es ist der Grund, warum die Klassennamen die Schnittstelle sind, die sich nicht ändern darf.

Der Kernel verwendet sie an vielen Stellen, die man leicht übersieht: Import und Export von Paketen (archive), jede E-Mail, die die Site verschickt (mail), der WebDAV-Server (index_webdav.php), der RSS-Export (feed), die REST-API und die darauf gebauten Endpunkte für GraphQL, Hilfe und Migrationen (MVC-Werkzeuge, authentication, cache, debug, event log, persistent object, database), Konsolenskripte (console tools), Setup > Systeminformationen (system information) und die Veröffentlichungswarteschlange für Inhalte (signal slot). Die Paketreferenz nennt die Klassen und Dateien für jede.

Geschichte: eZ Components, Zeta Components, expcomponents

Die Bibliotheken sind älter als der größte Teil des PHP-Ökosystems um sie herum, und sie haben vor diesem Fork zweimal den Besitzer gewechselt.

ZeitraumNameWerLizenzWo
Ab 2005eZ ComponentseZ Systems AS, das norwegische Unternehmen hinter eZ Publish, dem Produkt, aus dem Exponential hervorgingNew-BSD-Lizenzez.no, neben dem Code installiert (zum Beispiel als ezcomponents/trunk)
Ab 2010Apache Zeta ComponentsDer Inkubator der Apache Software Foundation, nachdem eZ Systems den Code eingebracht hatteApache License 2.0incubator.apache.org
Nach dem InkubatorZeta ComponentsDie Zeta Components development group, als unabhängiges ProjektApache License 2.0github.com/zetacomponents, Packagist zetacomponents/*
Seit 6.0.15Exponential Components (expcomponents)7x und die Exponential FoundationApache License 2.0github.com/se7enxweb, Packagist se7enxweb/expcomponents-*

Die Lizenzdatei jedes Pakets erzählt diese Geschichte noch heute mit eigenen Worten: „Zeta Components, Copyright 2011-2015 The Zeta Components development group“, „Apache Zeta Components, Copyright 2010-2011 The Apache Software Foundation“, „Originally developed by eZ Systems as eZ Components, Copyright 2005-2010 eZ Systems AS“. Diese Zeilen bleiben in den Forks.

Was das für die Produktlinie bedeutete:

  • eZ Publish 4.x, das eingestellte Produkt, aus dem Exponential hervorging, brauchte die eZ Components neben dem Code installiert, in einer Mindestversion je Release (2008.2 für 4.1, 2009.1 für 4.2, 2009.2.1 für 4.3 und 4.4, später die Sonderbuilds ezcomponents-ezp45 bis ezcomponents-ezp47). Der Setup-Assistent prüfte das mit dem Test ezcversion.
  • Exponential 6 installierte deren Fortführung, die Zeta Components, über Composer: zetacomponents/* in der composer.json im Wurzelverzeichnis, geladen über die Klassen-Map von Composer. 6.0.11 (Dezember 2025) hob sie auf die Releases an, die PHP 8.5 unterstützen.
  • Exponential 6.0.15 forkte zuerst zwei davon, weil der Kernel Korrekturen brauchte, die das Original nicht veröffentlicht hatte: se7enxweb/expcomponents-webdav 1.2.2 mit Sicherheitskorrekturen am WebDAV-Server (der Fork war vor seiner Umbenennung als se7enxweb/zetacomponents-webdav 1.2.1 veröffentlicht worden) und se7enxweb/expcomponents-archive 1.5.2, das GNU-tar-Einträge mit langen Namen wieder entpackt und unter PHP 8.4 und 8.5 keine Deprecations mehr ausgibt. Dann machte das Projekt es offiziell: Jede Zeta Component, die der Kernel braucht, wird als expcomponents geforkt, alle 21 Forks wurden am 2026-11-06 veröffentlicht, und die Linie 6.0.15 verlangt sie anstelle der Ursprungspakete.

Warum Exponential sie forkt

  • Die Aktivität im Original ist ungleich. Manche Pakete werden gepflegt und veröffentlicht (base und database 2026), andere hatten seit vielen Jahren kein Release: configuration, debug, event-log, image-analysis und signal-slot haben ihr letztes Tag im Original aus dem Jahr 2015. Ein Kernel, der ein Supportfenster verspricht, kann nicht auf Releases warten, die vielleicht nicht kommen.
  • PHP 8.x. Exponential unterstützt PHP 8.0 bis 8.5 und läuft auf PHP 7.4. Jede neue PHP-Version erklärt etwas für veraltet, das diese Bibliotheken tun (implizit nullbare Parameter, fehlende vorläufige Rückgabetypen, null an String-Funktionen). Eine Deprecation in einer Bibliothek wird zu einer Warnung in jedem Log jeder Site. Die Forks beheben sie dort, wo der Code ist, und ihre Tests laufen auf jeder PHP-Version, die der Kernel unterstützt.
  • Sicherheit. Korrekturen, die der Kernel braucht, müssen veröffentlicht werden können, wenn sie fertig sind. Der WebDAV-Fork ist das Beispiel: Sein Release 1.2.2 hält Anfragepfade und das Ziel von COPY und MOVE innerhalb der Wurzel des Backends, folgt keinen symbolischen Links aus ihr heraus, weist Anfragekörper mit einer Dokumenttyp-Deklaration ab, vergleicht die Digest-Authentifizierung in konstanter Zeit und erzeugt zufällige Sperr-Token.
  • Ein Verantwortlicher für den ganzen Stack. Kernel, Erweiterungen und Bibliotheken werden zusammen getestet, veröffentlicht und dokumentiert, nach denselben Regeln (dauerhafte Tags, ein Changelog-Eintrag je Änderung, Tests zu jeder Korrektur).
  • Modernisierung. Die Bibliotheken werden intern modernisiert; siehe die Absicht.

Ein Fork ist kein Bruch mit dem Original. Korrekturen, die allen nützen, werden dem Projekt Zeta Components als Pull-Requests angeboten, wie 7x es schon getan hat (das se7enxweb-Profil nennt 14 Sicherheits-Pull-Requests an Zeta Components im April 2026), und Korrekturen des Originals werden in die Forks übernommen (Abgleich mit dem Original).

Was gleich bleibt

  • Die Klassennamen und die APIs. Jede Klasse behält ihren ezc-Namen, jede öffentliche Methode ihre Signatur und Bedeutung. Code, der new ezcMailComposer() aufruft oder ezcWebdavSimpleBackend erweitert, funktioniert unverändert. Eine Änderung, die einen Aufrufer brechen würde, wird in der 1.x-Linie eines Forks nicht gemacht.
  • Die Dateien werden auf dieselbe Weise gefunden. Jedes Paket wird über die Klassen-Map von Composer geladen ("autoload": {"classmap": ["src"]}), genau wie das Ursprungspaket. In autoload.php, config.php oder den Klassen-Maps des Kernels ändert sich nichts.
  • Die Lizenz. Apache License 2.0. Die LICENSE.txt des Originals mit ihren Hinweiszeilen, CREDITS, ChangeLog und die Copyright-Köpfe in den Quelldateien bleiben, wie sie sind.
  • Die Versionslinie. Ein Fork führt die Versionsnummern des Originals fort: Das erste Fork-Release eines Pakets folgt auf das Release des Originals, von dem es ausgeht (archive ging von 1.5.1 auf 1.5.2, webdav von 1.2 auf 1.2.2), daher behält eine Bedingung wie ~1.10 ihre Bedeutung.
  • Die alten Paketnamen lösen sich auf. Über replace in Composer (unten) wird eine Anforderung an zetacomponents/mail von se7enxweb/expcomponents-mail erfüllt.
  • Einstellungen. Keine INI-Einstellung ändert sich. setup.ini [ezcversion] prüft weiterhin auf die Klasse ezcBaseFile, die der Fork von base liefert.

Was sich ändert

  • Die Paketnamen in composer.json, composer.lock, composer show und composer licenses: se7enxweb/expcomponents-<name> statt zetacomponents/<name>.
  • Die Verzeichnisse in vendor/: vendor/se7enxweb/expcomponents-<name>/ statt vendor/zetacomponents/<name>/. Code, der eine Bibliotheksdatei über ihren Pfad einbindet (was er nicht sollte), muss folgen; Code, der die Klassen verwendet, bemerkt nichts.
  • Wohin Fehlermeldungen gehen: in das Repository des Forks unter se7enxweb, nicht an das Projekt Zeta Components (unten).
  • Woher Releases kommen: Die Forks werden von 7x im Rhythmus von Exponential veröffentlicht, mit eigenen Release-Notes auf GitHub.

Die Pakete

Jede Zeta Component, die der Kernel braucht, hat einen Fork, und jeder Fork wurde am 2026-11-06 veröffentlicht und steht auf Packagist. Die Tabelle nennt sie alle: das Ursprungspaket, seinen Fork, das Repository, das Release des Originals, von dem der Fork ausgeht, das aktuelle Fork-Release und die Bedingung in der composer.json des Kernels (Tilde- oder Caret-Form, nie eine exakte Version). Die mit neu markierten Repositories wurden angelegt, als der Fork offiziell wurde; die übrigen bestanden schon.

UrsprungspaketFork-PaketRepositoryRelease des OriginalsFork-ReleaseDer Kernel verlangt
zetacomponents/basese7enxweb/expcomponents-baseexpcomponents-base1.9.51.9.6^1.9.6
zetacomponents/archivese7enxweb/expcomponents-archiveexpcomponents-archive1.5.11.5.3 (1.5.2 am 2026-11-03)~1.5.3
zetacomponents/authenticationse7enxweb/expcomponents-authenticationexpcomponents-authentication1.4.11.4.2~1.4.2
zetacomponents/cachese7enxweb/expcomponents-cacheexpcomponents-cache1.6.31.6.4~1.6.4
zetacomponents/configurationse7enxweb/expcomponents-configurationexpcomponents-configuration (neu)1.41.4.1~1.4.1
zetacomponents/console-toolsse7enxweb/expcomponents-console-toolsexpcomponents-console-tools (neu)1.7.51.7.6^1.7.6
zetacomponents/databasese7enxweb/expcomponents-databaseexpcomponents-database1.5.41.5.5~1.5.5
zetacomponents/debugse7enxweb/expcomponents-debugexpcomponents-debug (neu)1.31.3.1~1.3.1
zetacomponents/event-logse7enxweb/expcomponents-event-logexpcomponents-event-log (neu)1.51.5.1~1.5.1
zetacomponents/feedse7enxweb/expcomponents-feedexpcomponents-feed (neu)1.4.61.4.7~1.4.7
zetacomponents/image-analysisse7enxweb/expcomponents-image-analysisexpcomponents-image-analysis (neu)1.21.2.1über image-conversion
zetacomponents/image-conversionse7enxweb/expcomponents-image-conversionexpcomponents-image-conversion1.5.11.5.2~1.5.2
zetacomponents/mailse7enxweb/expcomponents-mailexpcomponents-mail (neu)1.10.11.10.2~1.10.2
zetacomponents/mvc-toolsse7enxweb/expcomponents-mvc-toolsexpcomponents-mvc-tools (neu)1.2.41.2.5~1.2.5
zetacomponents/persistent-objectse7enxweb/expcomponents-persistent-objectexpcomponents-persistent-object1.8.21.8.3~1.8.3
zetacomponents/signal-slotse7enxweb/expcomponents-signal-slotexpcomponents-signal-slot (neu)1.21.2.1~1.2.1
zetacomponents/system-informationse7enxweb/expcomponents-system-informationexpcomponents-system-information (neu)1.1.21.1.3~1.1.3
zetacomponents/webdavse7enxweb/expcomponents-webdavexpcomponents-webdav1.21.2.3 (1.2.2 am 2026-11-01)~1.2.3

Der Fork von image-conversion enthält außerdem eine Korrektur, die dem Original als Pull-Request #9 von zetacomponents/ImageConversion angeboten wurde: Seit das Original ImageMagick über eine Argumentliste statt über eine Shell aufruft, scheiterten Skalieren und Zuschneiden mit „unrecognized option `-resize '“, und der Fork kürzt die Optionsnamen. Seine Release-Notes zu 1.5.2 nennen den Rest.

Der Mail-Fork 1.10.2 enthält die Änderungen, die das Original nach seinem Release 1.10.1 vorgenommen hat, darunter den Schutz vor Header-Injection: Er weist eine Adresse mit Leerraum oder einem der Zeichen < > , ; " ab, bevor er einen Header schreibt, weil eine solche Adresse den Header beenden oder Empfänger hinzufügen könnte (Upgrade-Hinweise).

image-analysis verwendet der Kernel nicht direkt: image-conversion verlangt es, und der Bildeditor ezie verwendet beide. configuration bleibt verlangt, solange 7x SQLI Import 2.0.x eine seiner Ausnahmen wirft.

Forks, die es gibt, die der Kernel aber nicht verlangt:

UrsprungspaketFork-PaketWarum er nicht verlangt wird
zetacomponents/authentication-database-tieinse7enxweb/expcomponents-authentication-database-tiein (1.2.1, veröffentlicht am 2026-11-06)Kein Code des Kernels oder der Pakete, die er verlangt, verwendet es; der Kernel verlangt es seit Oktober 2026 nicht mehr (Verhaltensänderungen vom Oktober 2026).
zetacomponents/graphse7enxweb/expcomponents-graph (1.7.3, veröffentlicht am 2026-11-06)Weder der Kernel noch eine mitgelieferte Erweiterung zeichnet damit Diagramme; der Fork ist für Erweiterungen da, die es tun.
zetacomponents/workflowse7enxweb/expcomponents-workflow (1.5.2, veröffentlicht am 2026-11-06)Der Kernel hat seine eigene Workflow-Engine (eZWorkflow); der Fork ist für Erweiterungen da, die die Komponente verwenden.

Ursprungspakete, die nicht geforkt werden:

  • zetacomponents/mvc-authentication-tiein und zetacomponents/php-generator: Der Kernel verlangt sie seit Oktober 2026 nicht mehr; nichts verwendet sie.
  • zetacomponents/unit-test, zetacomponents/database-schema und zetacomponents/coding-standard: Entwicklungsabhängigkeiten der eigenen Testsuiten der Forks; sie bleiben im Original.

Keine composer.json einer mitgelieferten Erweiterung verlangt ein Paket zetacomponents/*, und auch das Metapaket se7enxweb/exponential-php-floor verlangt keines; der Wechsel geschieht allein in der composer.json des Kernels.

Wie die alten Paketnamen weiter funktionieren: „replace“ in Composer

Die composer.json jedes Forks sagt, welches Paket er ersetzt. Der Archive-Fork, wie veröffentlicht:

{
    "name": "se7enxweb/expcomponents-archive",
    "license": "Apache-2.0",
    "require": {
        "php": ">=7.1",
        "se7enxweb/expcomponents-base": "~1.8"
    },
    "replace": {
        "zetacomponents/archive": "self.version"
    }
}

Was replace für Composer bedeutet:

  1. Eine Anforderung an den alten Namen erfüllt der Fork. Ein Paket, das zetacomponents/archive ~1.5 verlangt, wird von se7enxweb/expcomponents-archive 1.5.3 erfüllt, weil self.version den Fork für dieselbe Version des alten Namens eintreten lässt.
  2. Das alte Paket wird nicht daneben installiert. Ein ersetztes Paket und sein Ersatz werden nie zusammen installiert; es gibt eine Kopie jeder Klasse.
  3. Die Forks verlangen einander mit ihren Fork-Namen. Der Archive-Fork oben verlangt se7enxweb/expcomponents-base, nicht zetacomponents/base; ein Paket Dritter, das noch zetacomponents/base verlangt, erhält den Base-Fork über dessen replace, und das ursprüngliche base wird nicht installiert.
  4. Der WebDAV-Fork ersetzt zwei Namen: zetacomponents/webdav und se7enxweb/zetacomponents-webdav, den Namen, unter dem er 1.2.1 veröffentlicht wurde.

replace benennt keine Klasse um und legt keinen Alias an; es sagt Composer nur, welche Pakete austauschbar sind. Das genügt hier, weil die Klassen dieselben sind.

Die Lizenz

Die Forks stehen unter der Apache License, Version 2.0 (Apache-2.0 in composer.json), der Lizenz der Zeta Components, aus denen sie stammen. Apache 2.0 erlaubt jedem, den Code zu verwenden, zu ändern und weiterzugeben, auch in einem Fork, unter diesen Bedingungen, denen die Forks folgen:

  • jedes Paket behält den Lizenztext und die Hinweiszeilen, mit denen es kam (LICENSE.txt mit den Hinweisen der Zeta Components development group, der Apache Software Foundation und von eZ Systems AS), und die Copyright-Köpfe in seinen Quelldateien;
  • Apache 2.0 (Abschnitt 4(b)) verlangt, dass geänderte Dateien gut sichtbare Hinweise tragen, dass sie geändert wurden; jede Änderung eines Forks ist ein Commit mit eigener Nachricht und ein Eintrag im ChangeLog des Pakets, und die Release-Notes führen sie auf;
  • jeder Fork liefert eine Datei NOTICE (Apache 2.0, Abschnitt 4(d)), die die Copyright-Hinweise des Originals behält und den Fork nennt; auch die Hinweiszeilen am Anfang von LICENSE.txt bleiben.

Der Kernel von Exponential selbst steht unter der GNU GPL Version 2 oder (nach Ihrer Wahl) jeder späteren Version (GPL-2.0-or-later). Wie beides zusammenpasst, kurz und ohne Übertreibung: Die Free Software Foundation hält die Apache License 2.0 für kompatibel mit GPL Version 3 und für inkompatibel mit ausschließlich GPL Version 2. Weil die Lizenz des Kernels „oder jede spätere Version“ enthält, kann der Kernel zusammen mit Bibliotheken unter Apache 2.0 unter GPL Version 3 verbreitet werden. Das ist dieselbe Lage wie mit den ursprünglichen Zeta Components vor dem Fork; der Fork ändert daran nichts. Eine Erweiterung unter ausschließlich GPL Version 2, die Code unter Apache 2.0 mitliefert, ist der Fall, den man genau ansehen sollte (Lizenzen und Kompatibilität). Das ist keine Rechtsberatung; fragen Sie zu Ihrer eigenen Verbreitung einen Rechtsbeistand.

Wo die Repositories und Pakete sind

  • Repositories: https://github.com/se7enxweb/expcomponents-<name>, zum Beispiel github.com/se7enxweb/expcomponents-mail. Jedes ist ein GitHub-Fork des passenden Repositorys unter github.com/zetacomponents (zum Beispiel zetacomponents/Mail), daher bleibt die Geschichte des Originals erhalten und sichtbar.
  • Pakete: auf Packagist als se7enxweb/expcomponents-<name>, zum Beispiel packagist.org/packages/se7enxweb/expcomponents-archive. Jeder Fork ist dort seit seinem Release am 2026-11-06.
  • Dokumentation: der Ordner docs/ und die README jedes Repositorys. Die API ist dieselbe wie im Original, daher beschreibt die Dokumentation der Zeta Components sie weiterhin.
  • Installierte Kopien: vendor/se7enxweb/expcomponents-<name>/ in einer Installation; composer show listet sie.

Versionen und Releases

  • Die Version eines Forks führt die Linie des Originals fort und erhöht für jedes Release die letzte Stelle: 1.5.1 im Original, dann 1.5.2, 1.5.3 ... im Fork. Auf 1.5.9 folgt 1.5.10; das Erreichen der Neun verschiebt nie eine höhere Stelle.
  • Tags haben kein Präfix v (1.5.2, nicht v1.5.2), wie im Original.
  • Ein veröffentlichtes Tag ist dauerhaft. Es wird nie verschoben, gelöscht oder neu erstellt; ein Fehler in einem Release wird mit dem nächsten Release korrigiert, dessen Notes sagen, was falsch war.
  • Der Kernel verlangt jeden Fork mit einer Tilde-Bedingung (~1.5.2), die jedes spätere Release derselben Linie annimmt (1.5.3, 1.5.10) und keine neue Minor-Linie.
  • Releases geben die Verantwortlichen frei. Die Release-Notes jedes Forks auf GitHub sind der Nachweis dessen, was veröffentlicht wurde.

Fehler melden und mitwirken

  • Ein Problem in einer Bibliothek (ein Fehler in ezcMail..., ein WebDAV-Client, der scheitert, eine Deprecation aus einer Datei in vendor/se7enxweb/expcomponents-*): Eröffnen Sie ein Issue im Repository dieses Forks. Nennen Sie das Paket und seine Version (composer show se7enxweb/expcomponents-mail), die PHP-Version und den kleinsten Code, der es zeigt.
  • Ein Sicherheitsproblem: Eröffnen Sie kein öffentliches Issue. Melden Sie es, wie die SECURITY.md des Kernels sagt ([email protected]).
  • Unklar, ob es am Kernel oder an der Bibliothek liegt: Eröffnen Sie es beim Kernel, se7enxweb/exponential; es wird verschoben.
  • Code: ein Pull-Request an den Fork, mit einem Test. Wie man klont, die Tests auf mehreren PHP-Versionen ausführt und die Commit-Nachricht schreibt: Zu expcomponents beitragen.

Modernisierung: die Absicht

In den Worten des Eigentümers forkt das Projekt die Zeta Components offiziell unter der Apache-2.0-Lizenz und modernisiert ihre Funktionen intern („officially forking zeta components under apache 2.0 license and modernizing its features internally“). Was das bedeutet und was nicht:

  • Die Modernisierung ist intern: Der Code in den Bibliotheken wird auf den Stand von aktuellem PHP gebracht, während Klassennamen und öffentliche API bleiben, wie sie sind, sodass der Kernel und jede Erweiterung weiter funktionieren.
  • Sie geschieht Paket für Paket, Release für Release, jede Änderung mit Tests, die auf jeder unterstützten PHP-Version laufen, und jedes Release mit Notes, die sagen, was sich geändert hat.
  • Alles, was ein Verhalten ändern würde, das ein Aufrufer sehen kann, wird in den Release-Notes des Forks und im Changelog des Kernels dokumentiert, bevor es verlangt wird.

Hier gibt es keine Liste neuer Funktionen anzukündigen. Wenn ein Fork eine bekommt, sagen es seine Release-Notes und diese Seite.

Fragen und Antworten

Muss ich meinen Code ändern? Nein, es sei denn, er bindet eine Bibliotheksdatei über ihren Pfad unter vendor/zetacomponents/ ein. Klassen, Methoden und Einstellungen sind unverändert.

Meine Erweiterung verlangt zetacomponents/mail. Wird sie noch installiert? Ja. se7enxweb/expcomponents-mail ersetzt zetacomponents/mail, daher zählt Composer die Anforderung als erfüllt. Sie können die Anforderung bei Gelegenheit auf den Namen des Forks ändern (Upgrade-Hinweise).

Kann ich zu den Ursprungspaketen zurück? Ja: Die Upgrade-Hinweise zeigen, wie (in einem Git-Klon in der composer.json des Kernels, in einem Composer-Projekt durch Verbleiben beim vorigen Kernel-Release) und was Sie dabei verlieren (die Korrekturen der Forks, vor allem die Sicherheitskorrekturen an WebDAV).

Ist das weiterhin Open Source? Ja. Apache License 2.0, öffentliche Repositories, öffentliche Issues.

Werden die Forks auf Namensräume umgestellt? Nicht auf eine Weise, die Aufrufer bricht. Die ezc-Klassennamen sind das Kompatibilitätsversprechen.

Warum „expcomponents“ und nicht „zetacomponents“? Ein Fork trägt den Namen des Projekts, das ihn pflegt, damit niemand seine Releases mit denen des Originalprojekts verwechselt. Das Präfix exp ist das, das Exponential für eigenen Code verwendet.

Verwandte Seiten

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