<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jehacgn</id>
	<title>Joomla! Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jehacgn"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Jehacgn"/>
	<updated>2026-05-13T18:36:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638998</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638998"/>
		<updated>2019-10-19T18:29:46Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Parameter und Rückgabewerte. Für Informationen über den neuen empfohlenen Ansatz für Plugins lese bitte S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&lt;br /&gt;
&lt;br /&gt;
=== Komponenten ===&lt;br /&gt;
* Alle Komponenten wurden im Namensraum angeordnet und die Verzeichnisse entsprechend überarbeitet. Für weitere Informationen dazu lese das Tutorial zum Erstellen einer Komponente in Joomla 4.&lt;br /&gt;
* Die Profilansicht com_admin wurde entfernt (dies scheint historisch bedingt durch Probleme beim Zugriff auf com_users erstellt worden zu sein. Dies ist nicht mehr der Fall, so dass alle Benutzerbearbeitungen über com_users edit user view im Backend laufen).&lt;br /&gt;
* com_actionlogs php 5.5 Backfill-Code wurde entfernt und entsprechend &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; ist nun vom Typ angedeutet, dass er ein &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; Objekt liefert.&lt;br /&gt;
* &amp;lt;span class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;Corekomponenten wurden aus Joomla 3.7 entfernt, da der URL-Routing-Modus&#039;Legacy&#039; entfernt wurde. Man sollte entweder die .htaccess-Datei oder die Umleitungskomponente verwenden, um interne URLs zu korrigieren, die sich ändern. Man kann den&#039;Modern&#039;-Modus in Joomla 3 ausprobieren, indem man den Anweisungen [[S:MyLanguage/J3.x:New_Routing_System|here]]] folgt.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* Das Plugin zur Google Mail-Authentifizierung wurde entfernt. Für weitere Informationen lese bitte[https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html diesen Blogbeitrag].&lt;br /&gt;
* Die Recaptcha v1-Unterstützung wurde vollständig aus dem Captcha-Plugin entfernt - dies funktioniert seit Q2 2018 nicht mehr, da Google die Unterstützung dafür eingestellt hat.&lt;br /&gt;
* Das Recaptcha-Plugin verwendet nun Googles offizielle php-Bibliothek für Captcha.&lt;br /&gt;
* Parameter und Rückgabewerte. Für Informationen über den neuen empfohlenen Ansatz für Plugins lese bitte [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]].&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* Das onContentBeforeSave-Ereignis benötigt nun den Datenparameter (dieser wird seit 3.7 in \Joomla\CMS\MVC\Model\Model\LegacyModel\ übergeben, wird aber nun konsistent von Core-Erweiterungen übergeben und vom Core Joomla Content Plugin verwendet).&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper wurde ersatzlos entfernt (es wurde in JApplicationAdministrator integriert).&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/168/de&amp;diff=638997</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/168/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/168/de&amp;diff=638997"/>
		<updated>2019-10-19T18:29:46Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Parameter und Rückgabewerte. Für Informationen über den neuen empfohlenen Ansatz für Plugins lese bitte S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Parameter und Rückgabewerte. Für Informationen über den neuen empfohlenen Ansatz für Plugins lese bitte [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]].&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638996</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638996"/>
		<updated>2019-10-19T18:27:53Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Das Recaptcha-Plugin verwendet nun Googles offizielle php-Bibliothek für Captcha.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&lt;br /&gt;
&lt;br /&gt;
=== Komponenten ===&lt;br /&gt;
* Alle Komponenten wurden im Namensraum angeordnet und die Verzeichnisse entsprechend überarbeitet. Für weitere Informationen dazu lese das Tutorial zum Erstellen einer Komponente in Joomla 4.&lt;br /&gt;
* Die Profilansicht com_admin wurde entfernt (dies scheint historisch bedingt durch Probleme beim Zugriff auf com_users erstellt worden zu sein. Dies ist nicht mehr der Fall, so dass alle Benutzerbearbeitungen über com_users edit user view im Backend laufen).&lt;br /&gt;
* com_actionlogs php 5.5 Backfill-Code wurde entfernt und entsprechend &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; ist nun vom Typ angedeutet, dass er ein &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; Objekt liefert.&lt;br /&gt;
* &amp;lt;span class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;Corekomponenten wurden aus Joomla 3.7 entfernt, da der URL-Routing-Modus&#039;Legacy&#039; entfernt wurde. Man sollte entweder die .htaccess-Datei oder die Umleitungskomponente verwenden, um interne URLs zu korrigieren, die sich ändern. Man kann den&#039;Modern&#039;-Modus in Joomla 3 ausprobieren, indem man den Anweisungen [[S:MyLanguage/J3.x:New_Routing_System|here]]] folgt.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* Das Plugin zur Google Mail-Authentifizierung wurde entfernt. Für weitere Informationen lese bitte[https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html diesen Blogbeitrag].&lt;br /&gt;
* Die Recaptcha v1-Unterstützung wurde vollständig aus dem Captcha-Plugin entfernt - dies funktioniert seit Q2 2018 nicht mehr, da Google die Unterstützung dafür eingestellt hat.&lt;br /&gt;
* Das Recaptcha-Plugin verwendet nun Googles offizielle php-Bibliothek für Captcha.&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* Das onContentBeforeSave-Ereignis benötigt nun den Datenparameter (dieser wird seit 3.7 in \Joomla\CMS\MVC\Model\Model\LegacyModel\ übergeben, wird aber nun konsistent von Core-Erweiterungen übergeben und vom Core Joomla Content Plugin verwendet).&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper wurde ersatzlos entfernt (es wurde in JApplicationAdministrator integriert).&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/164/de&amp;diff=638995</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/164/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/164/de&amp;diff=638995"/>
		<updated>2019-10-19T18:27:52Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Das Recaptcha-Plugin verwendet nun Googles offizielle php-Bibliothek für Captcha.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Recaptcha-Plugin verwendet nun Googles offizielle php-Bibliothek für Captcha.&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638993</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638993"/>
		<updated>2019-10-19T18:24:57Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Die Recaptcha v1-Unterstützung wurde vollständig aus dem Captcha-Plugin entfernt - dies funktioniert seit Q2 2018 nicht mehr, da Google die Unterstützung dafür eingestellt...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&lt;br /&gt;
&lt;br /&gt;
=== Komponenten ===&lt;br /&gt;
* Alle Komponenten wurden im Namensraum angeordnet und die Verzeichnisse entsprechend überarbeitet. Für weitere Informationen dazu lese das Tutorial zum Erstellen einer Komponente in Joomla 4.&lt;br /&gt;
* Die Profilansicht com_admin wurde entfernt (dies scheint historisch bedingt durch Probleme beim Zugriff auf com_users erstellt worden zu sein. Dies ist nicht mehr der Fall, so dass alle Benutzerbearbeitungen über com_users edit user view im Backend laufen).&lt;br /&gt;
* com_actionlogs php 5.5 Backfill-Code wurde entfernt und entsprechend &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; ist nun vom Typ angedeutet, dass er ein &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; Objekt liefert.&lt;br /&gt;
* &amp;lt;span class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;Corekomponenten wurden aus Joomla 3.7 entfernt, da der URL-Routing-Modus&#039;Legacy&#039; entfernt wurde. Man sollte entweder die .htaccess-Datei oder die Umleitungskomponente verwenden, um interne URLs zu korrigieren, die sich ändern. Man kann den&#039;Modern&#039;-Modus in Joomla 3 ausprobieren, indem man den Anweisungen [[S:MyLanguage/J3.x:New_Routing_System|here]]] folgt.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* Das Plugin zur Google Mail-Authentifizierung wurde entfernt. Für weitere Informationen lese bitte[https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html diesen Blogbeitrag].&lt;br /&gt;
* Die Recaptcha v1-Unterstützung wurde vollständig aus dem Captcha-Plugin entfernt - dies funktioniert seit Q2 2018 nicht mehr, da Google die Unterstützung dafür eingestellt hat.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* Das onContentBeforeSave-Ereignis benötigt nun den Datenparameter (dieser wird seit 3.7 in \Joomla\CMS\MVC\Model\Model\LegacyModel\ übergeben, wird aber nun konsistent von Core-Erweiterungen übergeben und vom Core Joomla Content Plugin verwendet).&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper wurde ersatzlos entfernt (es wurde in JApplicationAdministrator integriert).&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/163/de&amp;diff=638992</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/163/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/163/de&amp;diff=638992"/>
		<updated>2019-10-19T18:24:56Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Die Recaptcha v1-Unterstützung wurde vollständig aus dem Captcha-Plugin entfernt - dies funktioniert seit Q2 2018 nicht mehr, da Google die Unterstützung dafür eingestellt...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Recaptcha v1-Unterstützung wurde vollständig aus dem Captcha-Plugin entfernt - dies funktioniert seit Q2 2018 nicht mehr, da Google die Unterstützung dafür eingestellt hat.&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638991</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638991"/>
		<updated>2019-10-19T18:24:16Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Das Plugin zur Google Mail-Authentifizierung wurde entfernt. Für weitere Informationen lese bitte[https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-pl...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&lt;br /&gt;
&lt;br /&gt;
=== Komponenten ===&lt;br /&gt;
* Alle Komponenten wurden im Namensraum angeordnet und die Verzeichnisse entsprechend überarbeitet. Für weitere Informationen dazu lese das Tutorial zum Erstellen einer Komponente in Joomla 4.&lt;br /&gt;
* Die Profilansicht com_admin wurde entfernt (dies scheint historisch bedingt durch Probleme beim Zugriff auf com_users erstellt worden zu sein. Dies ist nicht mehr der Fall, so dass alle Benutzerbearbeitungen über com_users edit user view im Backend laufen).&lt;br /&gt;
* com_actionlogs php 5.5 Backfill-Code wurde entfernt und entsprechend &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; ist nun vom Typ angedeutet, dass er ein &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; Objekt liefert.&lt;br /&gt;
* &amp;lt;span class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;Corekomponenten wurden aus Joomla 3.7 entfernt, da der URL-Routing-Modus&#039;Legacy&#039; entfernt wurde. Man sollte entweder die .htaccess-Datei oder die Umleitungskomponente verwenden, um interne URLs zu korrigieren, die sich ändern. Man kann den&#039;Modern&#039;-Modus in Joomla 3 ausprobieren, indem man den Anweisungen [[S:MyLanguage/J3.x:New_Routing_System|here]]] folgt.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* Das Plugin zur Google Mail-Authentifizierung wurde entfernt. Für weitere Informationen lese bitte[https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html diesen Blogbeitrag].&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* Das onContentBeforeSave-Ereignis benötigt nun den Datenparameter (dieser wird seit 3.7 in \Joomla\CMS\MVC\Model\Model\LegacyModel\ übergeben, wird aber nun konsistent von Core-Erweiterungen übergeben und vom Core Joomla Content Plugin verwendet).&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper wurde ersatzlos entfernt (es wurde in JApplicationAdministrator integriert).&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/162/de&amp;diff=638990</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/162/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/162/de&amp;diff=638990"/>
		<updated>2019-10-19T18:24:15Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Das Plugin zur Google Mail-Authentifizierung wurde entfernt. Für weitere Informationen lese bitte[https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-pl...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Plugin zur Google Mail-Authentifizierung wurde entfernt. Für weitere Informationen lese bitte[https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html diesen Blogbeitrag].&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/161/de&amp;diff=638986</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/161/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/161/de&amp;diff=638986"/>
		<updated>2019-10-19T18:23:10Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;=== Plugins ===&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Plugins ===&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638984</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638984"/>
		<updated>2019-10-19T18:22:58Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Corekomponenten wurden aus Joomla 3.7 entfernt, da der URL-Routing-Modus&amp;#039;Legacy&amp;#039; entfernt wurde. Man sollte entweder die .htaccess-Datei oder die Umleitungskomponente verwende...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&lt;br /&gt;
&lt;br /&gt;
=== Komponenten ===&lt;br /&gt;
* Alle Komponenten wurden im Namensraum angeordnet und die Verzeichnisse entsprechend überarbeitet. Für weitere Informationen dazu lese das Tutorial zum Erstellen einer Komponente in Joomla 4.&lt;br /&gt;
* Die Profilansicht com_admin wurde entfernt (dies scheint historisch bedingt durch Probleme beim Zugriff auf com_users erstellt worden zu sein. Dies ist nicht mehr der Fall, so dass alle Benutzerbearbeitungen über com_users edit user view im Backend laufen).&lt;br /&gt;
* com_actionlogs php 5.5 Backfill-Code wurde entfernt und entsprechend &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; ist nun vom Typ angedeutet, dass er ein &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; Objekt liefert.&lt;br /&gt;
* &amp;lt;span class=&amp;quot;mw-translate-fuzzy&amp;quot;&amp;gt;Corekomponenten wurden aus Joomla 3.7 entfernt, da der URL-Routing-Modus&#039;Legacy&#039; entfernt wurde. Man sollte entweder die .htaccess-Datei oder die Umleitungskomponente verwenden, um interne URLs zu korrigieren, die sich ändern. Man kann den&#039;Modern&#039;-Modus in Joomla 3 ausprobieren, indem man den Anweisungen [[S:MyLanguage/J3.x:New_Routing_System|here]]] folgt.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* Das onContentBeforeSave-Ereignis benötigt nun den Datenparameter (dieser wird seit 3.7 in \Joomla\CMS\MVC\Model\Model\LegacyModel\ übergeben, wird aber nun konsistent von Core-Erweiterungen übergeben und vom Core Joomla Content Plugin verwendet).&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper wurde ersatzlos entfernt (es wurde in JApplicationAdministrator integriert).&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/204/de&amp;diff=638983</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/204/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/204/de&amp;diff=638983"/>
		<updated>2019-10-19T18:22:57Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Corekomponenten wurden aus Joomla 3.7 entfernt, da der URL-Routing-Modus&amp;#039;Legacy&amp;#039; entfernt wurde. Man sollte entweder die .htaccess-Datei oder die Umleitungskomponente verwende...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Corekomponenten wurden aus Joomla 3.7 entfernt, da der URL-Routing-Modus&#039;Legacy&#039; entfernt wurde. Man sollte entweder die .htaccess-Datei oder die Umleitungskomponente verwenden, um interne URLs zu korrigieren, die sich ändern. Man kann den&#039;Modern&#039;-Modus in Joomla 3 ausprobieren, indem man den Anweisungen [[S:MyLanguage/J3.x:New_Routing_System|here]]] folgt.&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638980</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638980"/>
		<updated>2019-10-19T18:21:08Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;com_actionlogs php 5.5 Backfill-Code wurde entfernt und entsprechend &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; ist nun vom Typ angedeutet, dass er ein...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&lt;br /&gt;
&lt;br /&gt;
=== Komponenten ===&lt;br /&gt;
* Alle Komponenten wurden im Namensraum angeordnet und die Verzeichnisse entsprechend überarbeitet. Für weitere Informationen dazu lese das Tutorial zum Erstellen einer Komponente in Joomla 4.&lt;br /&gt;
* Die Profilansicht com_admin wurde entfernt (dies scheint historisch bedingt durch Probleme beim Zugriff auf com_users erstellt worden zu sein. Dies ist nicht mehr der Fall, so dass alle Benutzerbearbeitungen über com_users edit user view im Backend laufen).&lt;br /&gt;
* com_actionlogs php 5.5 Backfill-Code wurde entfernt und entsprechend &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; ist nun vom Typ angedeutet, dass er ein &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; Objekt liefert.&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* Das onContentBeforeSave-Ereignis benötigt nun den Datenparameter (dieser wird seit 3.7 in \Joomla\CMS\MVC\Model\Model\LegacyModel\ übergeben, wird aber nun konsistent von Core-Erweiterungen übergeben und vom Core Joomla Content Plugin verwendet).&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper wurde ersatzlos entfernt (es wurde in JApplicationAdministrator integriert).&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/203/de&amp;diff=638979</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/203/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/203/de&amp;diff=638979"/>
		<updated>2019-10-19T18:21:07Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;com_actionlogs php 5.5 Backfill-Code wurde entfernt und entsprechend &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; ist nun vom Typ angedeutet, dass er ein...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;com_actionlogs php 5.5 Backfill-Code wurde entfernt und entsprechend &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; ist nun vom Typ angedeutet, dass er ein &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; Objekt liefert.&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638978</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638978"/>
		<updated>2019-10-19T18:20:02Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Das onContentBeforeSave-Ereignis benötigt nun den Datenparameter (dieser wird seit 3.7 in \Joomla\CMS\MVC\Model\Model\LegacyModel\ übergeben, wird aber nun konsistent von Co...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&lt;br /&gt;
&lt;br /&gt;
=== Komponenten ===&lt;br /&gt;
* Alle Komponenten wurden im Namensraum angeordnet und die Verzeichnisse entsprechend überarbeitet. Für weitere Informationen dazu lese das Tutorial zum Erstellen einer Komponente in Joomla 4.&lt;br /&gt;
* Die Profilansicht com_admin wurde entfernt (dies scheint historisch bedingt durch Probleme beim Zugriff auf com_users erstellt worden zu sein. Dies ist nicht mehr der Fall, so dass alle Benutzerbearbeitungen über com_users edit user view im Backend laufen).&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* Das onContentBeforeSave-Ereignis benötigt nun den Datenparameter (dieser wird seit 3.7 in \Joomla\CMS\MVC\Model\Model\LegacyModel\ übergeben, wird aber nun konsistent von Core-Erweiterungen übergeben und vom Core Joomla Content Plugin verwendet).&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper wurde ersatzlos entfernt (es wurde in JApplicationAdministrator integriert).&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/190/de&amp;diff=638977</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/190/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/190/de&amp;diff=638977"/>
		<updated>2019-10-19T18:20:01Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Das onContentBeforeSave-Ereignis benötigt nun den Datenparameter (dieser wird seit 3.7 in \Joomla\CMS\MVC\Model\Model\LegacyModel\ übergeben, wird aber nun konsistent von Co...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das onContentBeforeSave-Ereignis benötigt nun den Datenparameter (dieser wird seit 3.7 in \Joomla\CMS\MVC\Model\Model\LegacyModel\ übergeben, wird aber nun konsistent von Core-Erweiterungen übergeben und vom Core Joomla Content Plugin verwendet).&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638973</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638973"/>
		<updated>2019-10-19T18:16:25Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;JAdministratorHelper wurde ersatzlos entfernt (es wurde in JApplicationAdministrator integriert).&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&lt;br /&gt;
&lt;br /&gt;
=== Komponenten ===&lt;br /&gt;
* Alle Komponenten wurden im Namensraum angeordnet und die Verzeichnisse entsprechend überarbeitet. Für weitere Informationen dazu lese das Tutorial zum Erstellen einer Komponente in Joomla 4.&lt;br /&gt;
* Die Profilansicht com_admin wurde entfernt (dies scheint historisch bedingt durch Probleme beim Zugriff auf com_users erstellt worden zu sein. Dies ist nicht mehr der Fall, so dass alle Benutzerbearbeitungen über com_users edit user view im Backend laufen).&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper wurde ersatzlos entfernt (es wurde in JApplicationAdministrator integriert).&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/170/de&amp;diff=638972</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/170/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/170/de&amp;diff=638972"/>
		<updated>2019-10-19T18:16:25Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;JAdministratorHelper wurde ersatzlos entfernt (es wurde in JApplicationAdministrator integriert).&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JAdministratorHelper wurde ersatzlos entfernt (es wurde in JApplicationAdministrator integriert).&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638971</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638971"/>
		<updated>2019-10-19T18:15:43Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Die Profilansicht com_admin wurde entfernt (dies scheint historisch bedingt durch Probleme beim Zugriff auf com_users erstellt worden zu sein. Dies ist nicht mehr der Fall, so...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&lt;br /&gt;
&lt;br /&gt;
=== Komponenten ===&lt;br /&gt;
* Alle Komponenten wurden im Namensraum angeordnet und die Verzeichnisse entsprechend überarbeitet. Für weitere Informationen dazu lese das Tutorial zum Erstellen einer Komponente in Joomla 4.&lt;br /&gt;
* Die Profilansicht com_admin wurde entfernt (dies scheint historisch bedingt durch Probleme beim Zugriff auf com_users erstellt worden zu sein. Dies ist nicht mehr der Fall, so dass alle Benutzerbearbeitungen über com_users edit user view im Backend laufen).&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/202/de&amp;diff=638970</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/202/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/202/de&amp;diff=638970"/>
		<updated>2019-10-19T18:15:43Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Die Profilansicht com_admin wurde entfernt (dies scheint historisch bedingt durch Probleme beim Zugriff auf com_users erstellt worden zu sein. Dies ist nicht mehr der Fall, so...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Profilansicht com_admin wurde entfernt (dies scheint historisch bedingt durch Probleme beim Zugriff auf com_users erstellt worden zu sein. Dies ist nicht mehr der Fall, so dass alle Benutzerbearbeitungen über com_users edit user view im Backend laufen).&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638969</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638969"/>
		<updated>2019-10-19T18:15:07Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Alle Komponenten wurden im Namensraum angeordnet und die Verzeichnisse entsprechend überarbeitet. Für weitere Informationen dazu lese das Tutorial zum Erstellen einer Kompon...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&lt;br /&gt;
&lt;br /&gt;
=== Komponenten ===&lt;br /&gt;
* Alle Komponenten wurden im Namensraum angeordnet und die Verzeichnisse entsprechend überarbeitet. Für weitere Informationen dazu lese das Tutorial zum Erstellen einer Komponente in Joomla 4.&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/201/de&amp;diff=638968</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/201/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/201/de&amp;diff=638968"/>
		<updated>2019-10-19T18:15:07Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Alle Komponenten wurden im Namensraum angeordnet und die Verzeichnisse entsprechend überarbeitet. Für weitere Informationen dazu lese das Tutorial zum Erstellen einer Kompon...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alle Komponenten wurden im Namensraum angeordnet und die Verzeichnisse entsprechend überarbeitet. Für weitere Informationen dazu lese das Tutorial zum Erstellen einer Komponente in Joomla 4.&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638966</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638966"/>
		<updated>2019-10-19T18:13:55Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;=== Komponenten ===&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&lt;br /&gt;
&lt;br /&gt;
=== Komponenten ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/200/de&amp;diff=638965</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/200/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/200/de&amp;diff=638965"/>
		<updated>2019-10-19T18:13:55Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;=== Komponenten ===&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Komponenten ===&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638964</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638964"/>
		<updated>2019-10-19T18:13:33Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/97/de&amp;diff=638963</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/97/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/97/de&amp;diff=638963"/>
		<updated>2019-10-19T18:13:32Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Entfernen des Schlüsselbundes mit 4.0 hat dazu geführt, dass das gesamte Bin-Verzeichnis entfernt wurde, da es nur den Schlüsselbund enthielt&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638961</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638961"/>
		<updated>2019-10-19T18:12:22Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Removing the keychain with 4.0 has resulted in the removal of the entire Bin directory as it only contained keychain.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/160/de&amp;diff=638960</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/160/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/160/de&amp;diff=638960"/>
		<updated>2019-10-19T18:12:21Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im Bibliotheksstammordner des CMS sind keine Medien erlaubt - alle mit Joomla-Bibliotheken verbundenen Assets sollten gemäß den besten Beispielen in den Medienordner gelegt werden. Der direkte Zugriff wird mit einer.htaccess und web.config Datei im Stammverzeichnis des Bibliotheksverzeichnisses blockiert.&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638959</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638959"/>
		<updated>2019-10-19T18:09:46Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;=== Medien in Bibliotheken ===&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Medien in Bibliotheken ===&lt;br /&gt;
No media is allowed in the libraries root folder in the CMS - all assets associated with Joomla libraries should be put in the media folder as per best practices. Direct access is blocked with a .htaccess and web.config file in the root of the libraries directory.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Removing the keychain with 4.0 has resulted in the removal of the entire Bin directory as it only contained keychain.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/159/de&amp;diff=638958</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/159/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/159/de&amp;diff=638958"/>
		<updated>2019-10-19T18:09:45Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;=== Medien in Bibliotheken ===&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Medien in Bibliotheken ===&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638957</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638957"/>
		<updated>2019-10-19T18:09:08Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;== Sonstiges ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
=== Media in Libraries ===&lt;br /&gt;
No media is allowed in the libraries root folder in the CMS - all assets associated with Joomla libraries should be put in the media folder as per best practices. Direct access is blocked with a .htaccess and web.config file in the root of the libraries directory.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Removing the keychain with 4.0 has resulted in the removal of the entire Bin directory as it only contained keychain.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/95/de&amp;diff=638956</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/95/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/95/de&amp;diff=638956"/>
		<updated>2019-10-19T18:09:07Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;== Sonstiges ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sonstiges ==&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638955</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638955"/>
		<updated>2019-10-19T18:08:41Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen übe...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Media in Libraries ===&lt;br /&gt;
No media is allowed in the libraries root folder in the CMS - all assets associated with Joomla libraries should be put in the media folder as per best practices. Direct access is blocked with a .htaccess and web.config file in the root of the libraries directory.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Removing the keychain with 4.0 has resulted in the removal of the entire Bin directory as it only contained keychain.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/158/de&amp;diff=638954</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/158/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/158/de&amp;diff=638954"/>
		<updated>2019-10-19T18:08:41Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen übe...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Infolgedessen müssen alle Erweiterungen auf den neuen Bootstrap 4-Stil migriert werden, weg von der aktuellen Bootstrap 2.3.2 Implementierung. Für weitere Informationen über Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. Für weitere Informationen über Bootstrap 2.3.2: (http://getbootstrap.com/2.3.2/)&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/90/de&amp;diff=638953</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/90/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/90/de&amp;diff=638953"/>
		<updated>2019-10-19T18:07:39Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;== Templates ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Templates ==&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638952</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638952"/>
		<updated>2019-10-19T18:07:17Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wur...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
As a consequence, all extensions must migrate to the new Bootstrap 4 style, away from the current Bootstrap 2.3.2 implementation. For more information about Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. For more information about Bootstrap 2.3.2: [http://getbootstrap.com/2.3.2/]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Media in Libraries ===&lt;br /&gt;
No media is allowed in the libraries root folder in the CMS - all assets associated with Joomla libraries should be put in the media folder as per best practices. Direct access is blocked with a .htaccess and web.config file in the root of the libraries directory.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Removing the keychain with 4.0 has resulted in the removal of the entire Bin directory as it only contained keychain.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/86/de&amp;diff=638951</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/86/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/86/de&amp;diff=638951"/>
		<updated>2019-10-19T18:07:17Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wur...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Unter Joomla! 3.4 befand sich die PHPUTF8-Bibliothek an zwei Orten im Joomla! Paket; `libraries/phputf8` und `libraries/vendor/joomla/string/src/phputf8``.  In Joomla! 4.0 wurde die Kopie der Bibliothek in `libraries/phputf8` entfernt.  Die  Joomla\String\StringHelper class enthüllt viele der Funktionen der Bibliothek und die Composer-Autoloader-Definition importiert auch einen Großteil der Bibliothek, aber wenn man ein Feature benötigen, das nicht bereits enthalten ist, sollte man die benötigten Funktionen aus dem Pfad `libraries/vendor/joomla/string/src/phputf8` importieren.&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638918</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638918"/>
		<updated>2019-10-19T17:21:41Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die F...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
At Joomla! 3.4, the PHPUTF8 library lived in two locations in the Joomla! package; `libraries/phputf8` and `libraries/vendor/joomla/string/src/phputf8`.  In Joomla! 4.0, the copy of the library in `libraries/phputf8` has been removed.  The Joomla\String\StringHelper class exposes many of the library&#039;s functions and the Composer autoloader definition imports much of the library as well, however, if you need a feature that is not already included then you should import the required functions from the `libraries/vendor/joomla/string/src/phputf8` path.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
As a consequence, all extensions must migrate to the new Bootstrap 4 style, away from the current Bootstrap 2.3.2 implementation. For more information about Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. For more information about Bootstrap 2.3.2: [http://getbootstrap.com/2.3.2/]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Media in Libraries ===&lt;br /&gt;
No media is allowed in the libraries root folder in the CMS - all assets associated with Joomla libraries should be put in the media folder as per best practices. Direct access is blocked with a .htaccess and web.config file in the root of the libraries directory.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Removing the keychain with 4.0 has resulted in the removal of the entire Bin directory as it only contained keychain.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/91/de&amp;diff=638917</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/91/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/91/de&amp;diff=638917"/>
		<updated>2019-10-19T17:21:40Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die F...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alle Joomla! 3 Templates - ISIS und Hathor im Backend, sowie protostar und Beeze im Frontend werden nicht mehr unterstützt. Die neue 4.0 Backend-Vorlage heißt Atum und die Frontend-Vorlage Cassiopeia.&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638916</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638916"/>
		<updated>2019-10-19T17:20:20Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;FOF 2.x wurde entfernt.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
At Joomla! 3.4, the PHPUTF8 library lived in two locations in the Joomla! package; `libraries/phputf8` and `libraries/vendor/joomla/string/src/phputf8`.  In Joomla! 4.0, the copy of the library in `libraries/phputf8` has been removed.  The Joomla\String\StringHelper class exposes many of the library&#039;s functions and the Composer autoloader definition imports much of the library as well, however, if you need a feature that is not already included then you should import the required functions from the `libraries/vendor/joomla/string/src/phputf8` path.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
All the Joomla! 3 templates - ISIS and Hathor in the backend, and protostar and Beeze in the frontend are no longer supported. The new 4.0 backend template is called Atum and the frontend template is called Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
As a consequence, all extensions must migrate to the new Bootstrap 4 style, away from the current Bootstrap 2.3.2 implementation. For more information about Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. For more information about Bootstrap 2.3.2: [http://getbootstrap.com/2.3.2/]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Media in Libraries ===&lt;br /&gt;
No media is allowed in the libraries root folder in the CMS - all assets associated with Joomla libraries should be put in the media folder as per best practices. Direct access is blocked with a .htaccess and web.config file in the root of the libraries directory.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Removing the keychain with 4.0 has resulted in the removal of the entire Bin directory as it only contained keychain.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/157/de&amp;diff=638915</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/157/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/157/de&amp;diff=638915"/>
		<updated>2019-10-19T17:20:19Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;FOF 2.x wurde entfernt.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FOF 2.x wurde entfernt.&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638914</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638914"/>
		<updated>2019-10-19T17:19:53Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
At Joomla! 3.4, the PHPUTF8 library lived in two locations in the Joomla! package; `libraries/phputf8` and `libraries/vendor/joomla/string/src/phputf8`.  In Joomla! 4.0, the copy of the library in `libraries/phputf8` has been removed.  The Joomla\String\StringHelper class exposes many of the library&#039;s functions and the Composer autoloader definition imports much of the library as well, however, if you need a feature that is not already included then you should import the required functions from the `libraries/vendor/joomla/string/src/phputf8` path.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x has been removed.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
All the Joomla! 3 templates - ISIS and Hathor in the backend, and protostar and Beeze in the frontend are no longer supported. The new 4.0 backend template is called Atum and the frontend template is called Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
As a consequence, all extensions must migrate to the new Bootstrap 4 style, away from the current Bootstrap 2.3.2 implementation. For more information about Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. For more information about Bootstrap 2.3.2: [http://getbootstrap.com/2.3.2/]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Media in Libraries ===&lt;br /&gt;
No media is allowed in the libraries root folder in the CMS - all assets associated with Joomla libraries should be put in the media folder as per best practices. Direct access is blocked with a .htaccess and web.config file in the root of the libraries directory.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Removing the keychain with 4.0 has resulted in the removal of the entire Bin directory as it only contained keychain.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/89/de&amp;diff=638913</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/89/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/89/de&amp;diff=638913"/>
		<updated>2019-10-19T17:19:53Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Joomla! 4.0 wird mit Bootstrap 4 ausgeliefert. Bootstrap 2.3.2 wurde entfernt, aber wir haben einige BS2-Klassen beibehalten, um die Migration zu erleichtern (z.B. Das alte BS2-Element - unsichtbar existiert noch für Screenreader)&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638911</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638911"/>
		<updated>2019-10-19T17:19:14Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migra...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
At Joomla! 3.4, the PHPUTF8 library lived in two locations in the Joomla! package; `libraries/phputf8` and `libraries/vendor/joomla/string/src/phputf8`.  In Joomla! 4.0, the copy of the library in `libraries/phputf8` has been removed.  The Joomla\String\StringHelper class exposes many of the library&#039;s functions and the Composer autoloader definition imports much of the library as well, however, if you need a feature that is not already included then you should import the required functions from the `libraries/vendor/joomla/string/src/phputf8` path.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 ships with Bootstrap 4. Bootstrap 2.3.2 has been removed, however we have left some BS2 classes in to ease the migration (e.g. The old BS2 element-invisible still exists for screenreaders) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x has been removed.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
All the Joomla! 3 templates - ISIS and Hathor in the backend, and protostar and Beeze in the frontend are no longer supported. The new 4.0 backend template is called Atum and the frontend template is called Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
As a consequence, all extensions must migrate to the new Bootstrap 4 style, away from the current Bootstrap 2.3.2 implementation. For more information about Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. For more information about Bootstrap 2.3.2: [http://getbootstrap.com/2.3.2/]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Media in Libraries ===&lt;br /&gt;
No media is allowed in the libraries root folder in the CMS - all assets associated with Joomla libraries should be put in the media folder as per best practices. Direct access is blocked with a .htaccess and web.config file in the root of the libraries directory.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Removing the keychain with 4.0 has resulted in the removal of the entire Bin directory as it only contained keychain.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/88/de&amp;diff=638910</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/88/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/88/de&amp;diff=638910"/>
		<updated>2019-10-19T17:19:13Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migra...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Joomla! 4.0 wird mit jQuery 3 ausgeliefert.  Bitte lese [https://jquery.com/upgrade-guide/3.0/ den Upgrade-Leitfaden] für relevante Änderungen. Beachte dass wir jQuery Migrate auch nicht mehr berücksichtigen. Wir empfehlen, es lokal zu verwenden, um bei Problemen mit deinem Code zu helfen.&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638909</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638909"/>
		<updated>2019-10-19T17:17:55Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
At Joomla! 3.4, the PHPUTF8 library lived in two locations in the Joomla! package; `libraries/phputf8` and `libraries/vendor/joomla/string/src/phputf8`.  In Joomla! 4.0, the copy of the library in `libraries/phputf8` has been removed.  The Joomla\String\StringHelper class exposes many of the library&#039;s functions and the Composer autoloader definition imports much of the library as well, however, if you need a feature that is not already included then you should import the required functions from the `libraries/vendor/joomla/string/src/phputf8` path.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 ships with jQuery 3.  Please review [https://jquery.com/upgrade-guide/3.0/ the upgrading guide] for relevant changes. Note that we are not including jQuery Migrate anymore either. We recommend using it locally to help debug your code if there are any issues.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 ships with Bootstrap 4. Bootstrap 2.3.2 has been removed, however we have left some BS2 classes in to ease the migration (e.g. The old BS2 element-invisible still exists for screenreaders) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x has been removed.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
All the Joomla! 3 templates - ISIS and Hathor in the backend, and protostar and Beeze in the frontend are no longer supported. The new 4.0 backend template is called Atum and the frontend template is called Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
As a consequence, all extensions must migrate to the new Bootstrap 4 style, away from the current Bootstrap 2.3.2 implementation. For more information about Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. For more information about Bootstrap 2.3.2: [http://getbootstrap.com/2.3.2/]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Media in Libraries ===&lt;br /&gt;
No media is allowed in the libraries root folder in the CMS - all assets associated with Joomla libraries should be put in the media folder as per best practices. Direct access is blocked with a .htaccess and web.config file in the root of the libraries directory.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Removing the keychain with 4.0 has resulted in the removal of the entire Bin directory as it only contained keychain.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/87/de&amp;diff=638908</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/87/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/87/de&amp;diff=638908"/>
		<updated>2019-10-19T17:17:54Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die SimplePie-Bibliothek ist nicht mehr in Joomla! 4.0 enthalten.&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638907</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638907"/>
		<updated>2019-10-19T17:15:28Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änder...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
At Joomla! 3.4, the PHPUTF8 library lived in two locations in the Joomla! package; `libraries/phputf8` and `libraries/vendor/joomla/string/src/phputf8`.  In Joomla! 4.0, the copy of the library in `libraries/phputf8` has been removed.  The Joomla\String\StringHelper class exposes many of the library&#039;s functions and the Composer autoloader definition imports much of the library as well, however, if you need a feature that is not already included then you should import the required functions from the `libraries/vendor/joomla/string/src/phputf8` path.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
The SimplePie library is no longer included with Joomla! 4.0.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 ships with jQuery 3.  Please review [https://jquery.com/upgrade-guide/3.0/ the upgrading guide] for relevant changes. Note that we are not including jQuery Migrate anymore either. We recommend using it locally to help debug your code if there are any issues.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 ships with Bootstrap 4. Bootstrap 2.3.2 has been removed, however we have left some BS2 classes in to ease the migration (e.g. The old BS2 element-invisible still exists for screenreaders) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x has been removed.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
All the Joomla! 3 templates - ISIS and Hathor in the backend, and protostar and Beeze in the frontend are no longer supported. The new 4.0 backend template is called Atum and the frontend template is called Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
As a consequence, all extensions must migrate to the new Bootstrap 4 style, away from the current Bootstrap 2.3.2 implementation. For more information about Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. For more information about Bootstrap 2.3.2: [http://getbootstrap.com/2.3.2/]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Media in Libraries ===&lt;br /&gt;
No media is allowed in the libraries root folder in the CMS - all assets associated with Joomla libraries should be put in the media folder as per best practices. Direct access is blocked with a .htaccess and web.config file in the root of the libraries directory.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Removing the keychain with 4.0 has resulted in the removal of the entire Bin directory as it only contained keychain.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/85/de&amp;diff=638906</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/85/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/85/de&amp;diff=638906"/>
		<updated>2019-10-19T17:15:28Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änder...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Joomla! 4.0 wird mit PHPMailer 6.0 ausgeliefert.  Bitte überprüfe [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md den Upgrade-Leitfaden]. für relevante Änderungen.&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638905</id>
		<title>Potential backward compatibility issues in Joomla 4/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Potential_backward_compatibility_issues_in_Joomla_4/de&amp;diff=638905"/>
		<updated>2019-10-19T17:14:34Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{incomplete}}{{RightTOC}}In diesem Dokument werden mögliche Probleme mit der Abwärtskompatibilität für Joomla! 4 behandelt. Es werden Probleme aufgelistet, die möglicherweise zu Problemen mit Erweiterungen führen.&lt;br /&gt;
&lt;br /&gt;
Die Vergleichsbasis ist Joomla! 3.9.&lt;br /&gt;
&lt;br /&gt;
== Aktualisierte Systemanforderungen ==&lt;br /&gt;
Die Systemanforderungen wurden wie folgt aktualisiert:&lt;br /&gt;
*PHP 7.2&lt;br /&gt;
*MySQL 5.6&lt;br /&gt;
*PostgreSQL 11.0&lt;br /&gt;
*SQL-Server Support wurde eingestellt.&lt;br /&gt;
&lt;br /&gt;
=== PHP MySQL Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/mysql (der in PHP 7.0 entfernt wurde) &#039;&#039;&#039;nicht mehr&#039;&#039;&#039;. Joomla wird automatisch versuchen, die mysqli-Erweiterung (verfügbar seit PHP 5.3) oder den mysql-PDO-Treiber (verfügbar seit PHP 5.3) zu verwenden. Andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
* Der Strict-Modus wurde aktiviert. Die folgenden Flags sind jetzt standardmäßig in Joomla 4 aktiv und möglicherweise müssen die Datenbankabfragen entsprechend aktualisiert werden. Das wird uns bei zukünftigen Upgrades der MySQL-Version helfen und wird auch enger an Postgres ausgerichtet, um eine einfachere Kompatibilität mit Abfragen in beiden Sprachen zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;STRICT_TRANS_TABLES&#039;,&lt;br /&gt;
&#039;ERROR_FOR_DIVISION_BY_ZERO&#039;,&lt;br /&gt;
&#039;NO_AUTO_CREATE_USER&#039;,&lt;br /&gt;
&#039;NO_ENGINE_SUBSTITUTION&#039;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP Postgres Erweiterung ===&lt;br /&gt;
*Joomla unterstützt die Verwendung des PHP-Treibers ext/pgsql nicht mehr. Joomla wird automatisch versuchen, den PostgreSQL PDO-Treiber (verfügbar seit PHP 5.3 und Joomla 3.9) zu verwenden, andernfalls wird keine Datenbankverbindung hergestellt.&lt;br /&gt;
&lt;br /&gt;
== CMS Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden in den Joomla! CMS-Bibliotheken gemacht, das ist hauptsächlich der Code, der in Joomla! 3.7 und früheren Versionen im Verzeichnis „libraries/cms“ gefunden wurde.&lt;br /&gt;
&lt;br /&gt;
=== Installer ===&lt;br /&gt;
* Plugin Discover-Installationen suchen nicht mehr nach Xml-Dateien in den Joomla! 1.5 Plugin-Ordner-Layouts.&lt;br /&gt;
* In 3.x haben nur Plugin-Skripte die Preflight-Methode aufgerufen und keine macht Postflight während des Deinstallationsprozesses verfügbar. Bei allen Erweiterungstypen werden diese Hooks (Programm-Schnittstellen) in 4.0 verfügbar sein, wenn sie deinstalliert werden. Wenn Sie derzeit ein Preflight und ein Postflight durchführen und davon ausgehen, dass sie nur in einem Installations-/Aktualisierungskontext angewendet werden, ist diese Logik jetzt falsch und Sie sollten die Installationsroute verwenden (die als einer der Methodenparameter angegeben wird).&lt;br /&gt;
* Bei der Deinstallation eines Plugins wird jetzt die Deinstallationsfunktion im Erweiterungs-Skript ausgelöst, bevor SQL-Abfragen ausgelöst werden (dies ist jetzt mit allen anderen Erweiterungstypen konsistent).&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JInstallerComponent (ersatzweise JInstallerAdapterComponent benutzen)&lt;br /&gt;
*JInstallerFile (ersatzweise JInstallerAdapterFile benutzen)&lt;br /&gt;
*JInstallerLanguage (ersatzweise JInstallerAdapterLanguage benutzen)&lt;br /&gt;
*JInstallerLibrary (ersatzweise JInstallerAdapterLibrary benutzen)&lt;br /&gt;
*JInstallerModule (ersatzweise JInstallerAdapterModule benutzen)&lt;br /&gt;
*JInstallerPackage (ersatzweise JInstallerAdapterPackage benutzen)&lt;br /&gt;
*JInstallerPlugin (ersatzweise JInstallerAdapterPlugin benutzen)&lt;br /&gt;
*JInstallerTemplate (ersatzweise JInstallerAdapterTemplate benutzen)&lt;br /&gt;
*JSubMenuHelper (ersatzweise JHtmlSidebar benutzen. Bitte beachten: im Gegensatz zu JSubMenuHelper muss jetzt ein Platzhalter in der Ansichtsvorlage hinzugefügt werden)&lt;br /&gt;
&lt;br /&gt;
==== JInstallerAdapter Vererbung ====&lt;br /&gt;
JInstallerAdapter ist nicht mehr von JAdapterInstance abhängig und von Natur aus JObject.&lt;br /&gt;
&lt;br /&gt;
Benutzerdefinierte Installer-Adapter müssen jetzt automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Menü ===&lt;br /&gt;
==== JMenu ist jetzt eine abstrakte Klasse ====&lt;br /&gt;
JMenu ist jetzt eine abstrakte Klasse. Unterklassen von JMenu müssen jetzt auch eine Lademethode implementieren.&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JMenu::getInstance(), eine Datei manuell aus dem Pfad includes/menu.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JMenu sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JPathway::getInstance(), eine Datei aus dem Pfad includes/pathway.php der Anwendung manuell einzubinden, wurde entfernt. Die Unterklasse JPathway sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
==== Manuelles Include-Verhalten entfernt ====&lt;br /&gt;
Die Logik in JRouter::getInstance(), eine Datei manuell aus dem Pfad includes/router.php der Anwendung einzubinden, wurde entfernt. Die Unterklasse JRouter sollte stattdessen automatisch geladen werden.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen der Methodensignatur ====&lt;br /&gt;
Die attachBuildRule und attachParseRule sind nun typisiert, um Callables zu benötigen.&lt;br /&gt;
&lt;br /&gt;
=== JVersion ===&lt;br /&gt;
Unterstützung für den Zugriff auf die JVersion-Klassenkonstanten als Klasseneigenschaften wird nicht mehr unterstützt. Die Konstanten wurden in Joomla! 3.5 eingeführt, um zu verhindern, dass die alten Klasseneigenschaften bearbeitet werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden veralteten Konstanten wurden entfernt:&lt;br /&gt;
* JVersion::RELEASE&lt;br /&gt;
* JVersion::DEV_LEVEL&lt;br /&gt;
* JVersion::BUILD&lt;br /&gt;
&lt;br /&gt;
=== JHtml === &lt;br /&gt;
* Die Registerfunktion in JHtml ist nun typisiert, um eine Callable zu benötigen. Unterklassen von JHtml müssen nun mit dieser Signatur übereinstimmen (beachte, dass dies bereits auf Funktionscode-Ebene erforderlich war).&lt;br /&gt;
* JHtml::_ erlaubt es nicht mehr, nicht-öffentliche Methoden in JHtml aufzurufen&lt;br /&gt;
* JHtml::_ ist nun eine endgültige Methode (Man kann sie nicht mehr überschreiben, wenn mandie Unterklasse JHtml verwendet) und ihre Signatur hat sich geändert, um die Vorteile moderner PHP-Funktionen (skalare und variadische Typisierungspunkte) zu nutzen.&lt;br /&gt;
* JHtmlBootstrap::modal wurde entfernt. Verwende JHtmlBootstrap::renderModal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Platform ==&lt;br /&gt;
Die folgenden Änderungen wurden an den Bibliotheken der Joomla! Plattform vorgenommen (dies ist in erster Linie Code, der sich in den Verzeichnissen `libraries/joomla` oder `libraries/legacy` in Joomla! 3 befindet).&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
Die folgenden Klassen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JApplicationWebRouter (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterBase (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
*JApplicationWebRouterRest (verwenden Sie stattdessen das Paket `joomla/router`)&lt;br /&gt;
&lt;br /&gt;
===== Veraltete Klassen ====&lt;br /&gt;
Die folgenden Klassen sind veraltet und für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JApplicationBase (verwenden Sie stattdessen Joomla\Application\Application\AbstractApplication)&lt;br /&gt;
&lt;br /&gt;
==== CLI/Web Class Changes ====&lt;br /&gt;
Die Klassen JApplicationCli und JApplicationWeb wurden neu zusammengesetzt, um stattdessen aus dem Anwendungspaket des Frameworks zu erweitern. Dies bricht die Typprüfung für ein JApplicationBase-Objekt ab. Aus Gründen der Aufwärtskompatibilität wird empfohlen, zu prüfen, ob Anwendungsklassen eine Instanz von Joomla\Application\AbstractApplication sind (JApplicationBase hat diese Klasse seit Joomla! 3.4 erweitert).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sind diese beiden Klassen nun abstrakt. Entwickler, die diese Klassen implementieren, müssen eine `doExecute&#039;-Methode mit der Logik ihrer Anwendung bereitstellen.&lt;br /&gt;
&lt;br /&gt;
Die registerEvent-Methode ist nun typischerweise so eingestellt, dass für den $handler-Parameter eine Aufrufbarkeit erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Anwendungen, die sowohl Web- als auch CLI-Anwendungen unterstützen wollen, sollten nun gegen das \Joomla\CMS\Application\ CMSApplicationInterface antreten - dies enthält gängige Methoden (einige davon wurden in Joomla 3.x nur in der Klasse JApplicationCms gefunden), die von allen Codes verwendet werden können. Es wird dringend empfohlen, dass alle benutzerdefinierten Anwendungen (insbesondere CLI-Anwendungen) diese Schnittstelle implementieren, um Kompatibilitätsprüfungen zu erleichtern. Gleichzeitig sollten alle Typ-Hints die Schnittstelle und nicht eine konkrete Klasse verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationCli =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationCli {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationCli {{rarr}} Joomla\Application\AbstractCliApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
===== JApplicationWeb =====&lt;br /&gt;
&lt;br /&gt;
*Alt: JApplicationWeb {{rarr}} JApplicationBase {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
*Neu: JApplicationWeb {{rarr}} Joomla\Application\AbstractWebApplication {{rarr}} Joomla\Application\AbstractApplication&lt;br /&gt;
&lt;br /&gt;
* Die alten Methoden zum Aufruf von JApplicationWeb::redirect wurden entfernt.&lt;br /&gt;
** Mit einer Nachricht und messageType-Parametern (Aufruf von enqueueMessage separat)&lt;br /&gt;
** Die Übergabe eines True/False-Wertes als 2nd/3rd-Params anstelle eines Redirect-Codes führt zu einer InvalidArgumentException, anstatt auf ein 303 zu setzen.&lt;br /&gt;
* JApplicationWeb::$singleValueResponseHeaders wurde entfernt, da die Framework-Anwendung ab dem Release 2.0 intern PSR-7 Response-Objekte verwenden wird. Dies ändert die Art und Weise, wie die Kopfdaten gespeichert werden, so dass es sich immer um ein multidimensionales Array handelt, wobei jeder Top-Level-Schlüssel die Headernamen und der Wert ein Array mit allen Werten für diesen Header ist.&lt;br /&gt;
&lt;br /&gt;
===== CMSApplication =====&lt;br /&gt;
&lt;br /&gt;
*Die Klasseneigenschaften $_clientId, $_messageQueue und $_name wurden alle umbenannt, um das Unterstrichpräfix zu entfernen.&lt;br /&gt;
* Implementiert nun die CMSApplicationInterface.&lt;br /&gt;
* Wenn ein Fehler beim Abrufen eines Pathway-, Router- oder Menüobjekts mit den entsprechenden Methoden auftritt, poppt die Ausnahme nun auf und nicht mehr die Methode, die die Ausnahme stillschweigend abfängt und null zurückgibt&lt;br /&gt;
* CMSApplication::getInstance will now additionally try and load the user object (using the loadIdentity function)&lt;br /&gt;
* ConsoleApplication und ApiApplication können zu irreführenden Ergebnissen führen. Bitte verwende CMSApplication::isClient (verfügbar ab {{JVer | 3.7}}). Weitere Informationen finden Sie unter [[S:MyLanguage/J3.x:Discover_on_which_client_your_extension_code_is_running|Discover auf welchem Client Ihr Extensionscode läuft]].&lt;br /&gt;
&lt;br /&gt;
===== JApplicationSite =====&lt;br /&gt;
Die Klasseneigenschaften $_language_filter und $_detect_browser wurden umbenannt, um den Unterstrich-Präfix zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Die veraltete Methode JApplicationSite::getPageParameters wurde zugunsten ihres Alias JApplicationSite::getParams entfernt.&lt;br /&gt;
&lt;br /&gt;
===== JApplicationHelper =====&lt;br /&gt;
&lt;br /&gt;
JApplicationHelper::parseXMLLangMetaFile wurde ersatzlos entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Archiv ===&lt;br /&gt;
*Das Archivpaket wurde zugunsten des Frameworks-Archivpakets entfernt. Beachte, dass die API unverändert bleiben sollte.&lt;br /&gt;
* Bei der Fehlerbehandlung werden nun Ausnahmen anstelle von JError verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Crypt ===&lt;br /&gt;
==== aus Joomla! entfernte Klassen ====&lt;br /&gt;
&lt;br /&gt;
Die folgenden Verschlüsselungen wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JCryptCipher3Des&lt;br /&gt;
*JCryptCipherBlowfish&lt;br /&gt;
*JCryptCipherMcrypt&lt;br /&gt;
*JCryptCipherRijndael256&lt;br /&gt;
*JCryptCipherSimple&lt;br /&gt;
&lt;br /&gt;
diese wurden ersatzlos entfernt. Verwenden Sie JCryptCipherCrypto&lt;br /&gt;
&lt;br /&gt;
==== Removed Methods ====&lt;br /&gt;
* JCrypt::hasStrongPasswordSupport wurde ersatzlos entfernt (dies versuchte, bcrypt polyfills auf Linux-Hosting zu erkennen, gab aber immer true zurück, da wir PHP 5.3.10 in Joomla 3.3 benötigten).&lt;br /&gt;
&lt;br /&gt;
=== Cache === &lt;br /&gt;
* JCacheController::get benötigt jetzt eine aufrufbare. Dadurch wurde JCacheControllerCallback::call entfernt.&lt;br /&gt;
* JCacheStorage::test wurde entfernt. Verwende stattdessen JCacheStorage::isSupported.&lt;br /&gt;
* Die Standardspeicher-Engines werden nicht mehr manuell geladen, da sie nun automatisch geladen werden.&lt;br /&gt;
* JCacheControllerOutput::start und JCacheControllerOutput::end wurden ersatzlos entfernt.&lt;br /&gt;
* CacheLite-Speicher wurde entfernt, da er nicht mit PHP7 kompatibel ist (was unsere Minimalversion ist).&lt;br /&gt;
* Die Fehlerbehandlung verwendet nun Exceptions anstelle von JError.&lt;br /&gt;
&lt;br /&gt;
=== Komponente ===&lt;br /&gt;
* \Joomla\CMS\Component\Component\ComponentRecord erweitert JObject nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Document === &lt;br /&gt;
&lt;br /&gt;
==== Inheritance Change ====&lt;br /&gt;
Die folgenden Klassen haben ihre Vererbung geändert:&lt;br /&gt;
*JDocumentError (reicht jetzt von \Joomla\Cms\Document\HtmlDocument anstelle von \Joomla\Cms\Document\Document)&lt;br /&gt;
&lt;br /&gt;
Hinweis als Ergebnis dieser Änderung Rendern einer Fehlerseite setzt das Dokument Objekt in Joomla\CMS\Factory::$document, die Begründung ist, dass wir wollen, dass ein sauberes Dokument von der Arbeit; wenn die Fehlerseite ausgelöst wird, sind wir nicht interessiert an den Metadaten, die Ihre Komponente gesetzt hat, oder die Medien aus einem schlechten Modul hinzugefügt, oder was Plugins hinzufügen, um die Anzeige. Wir wollen eine saubere Umgebung für die Darstellung der Fehlerseite, die nur die geladenen Daten der Fehlerseite enthält.&lt;br /&gt;
&lt;br /&gt;
==== Renderers ====&lt;br /&gt;
* Um der RSS-Feed-Spezifikation zu entsprechen, erlaubt JDocumentRendererFeedRss nun die Konfiguration des lastBuildDate Elements über die Klasseneigenschaft JDocumentFeed::$lastBuildDate, wenn ein Feed gerendert wird.  Dieser Wert ist standardmäßig auf die aktuelle Zeit voreingestellt, wie es bei Joomla! 3.x und früher der Fall ist, jedoch kann die Zeit korrekt eingestellt werden, indem man diese Klasseneigenschaft in ein JDate-Objekt ändert, das den gewünschten Zeitstempel darstellt.&lt;br /&gt;
* hier ist nun ein RendererInterface, das alle Renderer implementieren sollten.&lt;br /&gt;
* JDocumentRenderer ist nun eine abstrakte Klasse und implementiert RendererInterface.&lt;br /&gt;
* Alternativ zu &amp;lt;jdoc:include type=&amp;quot;head&amp;quot; /&amp;gt; kann man nun &amp;lt;jdoc:include type=&amp;quot;metas&amp;quot; /&amp;gt; für Metadaten, &amp;lt;jdoc:include type=&amp;quot;styles&amp;quot; /&amp;gt; für CSS und &amp;lt;jdoc:include type=&amp;quot;scripts&amp;quot; /&amp;gt; für Javascript einzeln laden. Die Absicht ist es, den Benutzern optional zu erlauben, alle Javascripts am unteren Rand des HTML-Dokuments in ihren Vorlagen zu platzieren.&lt;br /&gt;
&lt;br /&gt;
==== JDocumentFeed ====&lt;br /&gt;
Der Eigenschaftstyp von JDocumentFeed::$lastBuildDate wurde von einer Zeichenkette in ein JDate-Objekt geändert. Die Eigenschaft wurde bisher nicht von der Core Joomla API verwendet, aber Erweiterungen können es verwendet haben.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank ===&lt;br /&gt;
* Dieses Paket wurde durch das Joomla Framework Database Package ersetzt.&lt;br /&gt;
* Der Debug-Modus wurde überarbeitet (siehe die Framework-Dokumente für weitere Informationen). [https://github.com/joomla-framework/database])&lt;br /&gt;
&lt;br /&gt;
=== Factory ===&lt;br /&gt;
* Factory::getApplication nimmt keine Argumente mehr an. Diese waren irreführend, da sie immer die aktive Anwendung nach dem ersten Aufruf im Bootstrap zurückgaben, egal welche Argumente in die Funktion übergeben wurden.&lt;br /&gt;
* Factory::getXml wurde zusammen mit dem JXMLElement entfernt. Verwende stattdessen SimpleXMLElement direkt.&lt;br /&gt;
* Factory::: getEditor wurde entfernt, verwende stattdessen JEditor::getInstance.&lt;br /&gt;
&lt;br /&gt;
=== Umgebung ===&lt;br /&gt;
* &amp;lt;noinclude&amp;gt;JBrowser::isSSLConnection has been removed. Use JApplicationCms::isSSLConnection (available since Joomla 3.2)&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filesystem === &lt;br /&gt;
* Die Wrapperklassen des Dateisystems wurden entfernt. Verwende weiterhin die ursprünglichen statischen Methoden.&lt;br /&gt;
&lt;br /&gt;
=== Form ===&lt;br /&gt;
*Die Verzeichnisse libraries/joomla/form/fields und libraries/joomla/form/rules sind nicht mehr registriert, um Formularklassen zu finden, sondern alle Formularklassen sollten automatisch geladen werden.&lt;br /&gt;
*wei neue Eigenschaften hinzugefügt addfieldprefix, das ein Namensraumpräfix für Erweiterungen registriert (das als Ersatz für addfieldpath verwendet werden soll). Zum Beispiel für die Nutzung siehe[https://github.com/joomla/joomla-cms/pull/16419 dieser Github PR].&lt;br /&gt;
* JForm::getControlGroup wurde entfernt und verwendet den Alias JForm::renderField (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JForm::getControlGroups wurde entfernt und verwendet den Alias JForm::renderFieldset (verfügbar seit Joomla 3.2.3).&lt;br /&gt;
* JFormFieldUsergroup wurde entfernt. Verwende stattdessen Joomla\CMS\Form\Field\UsergrouplistField (verfügbar seit Joomla 3.2).&lt;br /&gt;
* JFormFieldFilelist und JFormFieldFolderList wurden ihre Filtereigenschaften umbenannt in &amp;lt;code&amp;gt;fileFilter&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;folderFilter&amp;lt;/code&amp;gt; (um die Verwendung des regulären Joomla-Filterattributs auf zurückgegebene Werte zu ermöglichen).&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
*JHttpResponse (verwende stattdessen Joomla\Http\Response)&lt;br /&gt;
*JHttpTransport (implementiere stattdessen Joomla\Http\TransportInterface)&lt;br /&gt;
&lt;br /&gt;
=== Klassenwechsel ====&lt;br /&gt;
Das HTTP-Paket des Frameworks ist nun in Joomla! 4.0 und JHttp enthalten und die Unterklassen JHttpTransport wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
===== JHttp =====&lt;br /&gt;
Der JHttp class constructor wurde mit den folgenden Änderungen gelockert:&lt;br /&gt;
*Der Optionsparameter ist nicht mehr als Joomla\Registry\Registry-Objekt typisiert, ein Array oder ein beliebiges Objekt, das die Schnittstelle[https://secure.php.net/manual/en/class.arrayaccess.php ArrayAccess] implementiert, kann stattdessen verwendet werden.&lt;br /&gt;
*Der Transportparameter erlaubt nun jedes Joomla\Http\TransportInterface-Objekt.&lt;br /&gt;
&lt;br /&gt;
===== JHttpTransport =====&lt;br /&gt;
Die nun veraltete JHttpTransport-Schnittstelle erweitert Joomla\Http\TransportInterface jetzt und hat zu Rückwärtskompatibilität geführt, die Änderungen in der Schnittstelle brechen.  Der Konstruktor ist nicht mehr Teil der Schnittstelle, und die `Request()`Methode der Schnittstelle hat eine Signaturänderung erfahren.  Insbesondere der zweite Parameter, der zuvor die JUri-Klasse typisiert hat, typisiert nun Joomla\Uri\Uri\UriInterface.&lt;br /&gt;
&lt;br /&gt;
===== JHttpResponse =====&lt;br /&gt;
Beim Refactoring des Response-Objekts, das vom HTTP-Paket des Frameworks übernommen werden soll, das nun die PSR-7 ResponseInterface-API verwendet, wurde ein kleiner Kompatibilitätsbruch in der Struktur der Response-Header vorgenommen.  Ab 4.0 ist dies nun immer ein multidimensionales Array, wobei der Schlüssel der Headername und der Wert ein Array von Werten für diesen Header ist (früher war dies eine Zeichenkette).&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&lt;br /&gt;
==== Veraltete Klassen und Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces sind veraltet und wurden für die Entfernung in Joomla! 5.0 geplant:&lt;br /&gt;
* JImageFilter (verwende stattdessen Joomla\Image\ImageFilter)&lt;br /&gt;
* JImageFilterBackgroundfill (verwende stattdessen Joomla\Image\Filter\Backgroundfill)&lt;br /&gt;
* JImageFilterBrightness (verwende stattdessen Joomla\Image\Filter\Brightness)&lt;br /&gt;
* JImageFilterContrast (verwende stattdessen Joomla\Image\Filter\Contrast)&lt;br /&gt;
* JImageFilterEdgedetect (verwende stattdessen Joomla\Image\Filter\Edgedetect)&lt;br /&gt;
* JImageFilterEmboss (verwende stattdessen Joomla\Image\Filter\Emboss)&lt;br /&gt;
* JImageFilterGraustufen (verwende stattdessen Joomla\Image\Filter\Graustufen)&lt;br /&gt;
* JImageFilterNegate (verwende stattdessen Joomla\Image\Filter\Negate)&lt;br /&gt;
* JImageFilterSketchy (verwende stattdessen Joomla\Image\Filter\Sketchy) &lt;br /&gt;
* JImageFilterSmooth (verwende stattdessen Joomla\Image\Filter\Smooth)&lt;br /&gt;
&lt;br /&gt;
==== Klassenwechsel ====&lt;br /&gt;
Das Image-Paket des Frameworks ist nun in Joomla! 4.0 und JImage enthalten und die Unterklassen JImageFilter wurden überarbeitet, um das Upstream-Paket zu verwenden.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
* JMenu::$_items, JMenu::$_default und JMenu::$_active wurden entfernt (beachten Sie, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JMenu betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Keychain ===&lt;br /&gt;
Das Entfernen des Schlüsselanhängers mit 4.0 hat zur Entfernung der folgenden Klasse geführt:&lt;br /&gt;
*JKeychain&lt;br /&gt;
&lt;br /&gt;
=== Pathway ===&lt;br /&gt;
* JPathway::$_pfad und JPathway::$_count wurden von ihrem Unterstrich-Präfix befreit (beachte, dass diese Eigenschaften geschützt waren, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
* JPathway::_makeItem wurde zugunsten von JPathway::makeItem entfernt (beachte, dass diese Methode geschützt wurde, so dass dies nur benutzerdefinierte Unterklassen von JPathway betrifft).&lt;br /&gt;
&lt;br /&gt;
=== Table === &lt;br /&gt;
* JTable::__construct Datenbankobjekt ist nun typisiert, um ein JDatabaseDriver zu sein.&lt;br /&gt;
** Unterklassen von JTable müssen sicherstellen, dass sie ein JDatabaseDriver-Objekt an den übergeordneten Konstruktor übergeben.&lt;br /&gt;
** Unterklassen von JTable müssen die Methodensignatur von setDbo() ändern, wenn sie eine erweiterte Version dieser Methode haben, um den typehint aufzunehmen.&lt;br /&gt;
* Es gibt eine neue Methode JTable::hasField - alle Instanzen von property_exists auf JTable-Instanzen verwenden nun diese Proxy-Methode, um eine bessere Interoperabilität von Tabelleninstanzen zu ermöglichen.&lt;br /&gt;
* Das JTableObserver-Muster (und die entsprechenden Klassen) wurden aus JTable entfernt. JTable löst nun Ereignisse und Tags aus, die Inhaltshistorie (und alle anderen benutzerdefinierten Anwendungen dieses Musters) sollten zu Standard-Plugins wechseln.&lt;br /&gt;
&lt;br /&gt;
=== Mail ===&lt;br /&gt;
Die folgenden Methoden wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
* JMail::sendAdminMail wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Sprache ====&lt;br /&gt;
* Die Funktionen setTransliterator, setPluralSuffixesCallback, setIgnoredSearchWordsCallback, setLowerLimitSearchWordCallback, setUpperLimitSearchWordCallback und setSearchDisplayedCharactersNumberCallback sind nun typisiert, um ein Callable zu benötigen.&lt;br /&gt;
* Der &amp;lt;tt&amp;gt;&amp;quot;_QQ_&amp;quot;&amp;lt;/tt&amp;gt; Platzhalter für doppelte Anführungszeichen wurde entfernt (dies existierte nur, um einen alten PHP-Bug zu umgehen, der behoben wurde). Escape doppelte Anführungszeichen bei Bedarf (z.B. &amp;lt;tt&amp;gt;\&amp;quot;&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Legacy MVC Layer ===&lt;br /&gt;
&lt;br /&gt;
==== Legacy Controller ====&lt;br /&gt;
* JControllerLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JControllerLegacy erweitert JObject nicht mehr. Controller sollten keine der in der Klasse JObject enthaltenen Methoden aufrufen.&lt;br /&gt;
* JControllerLegacy implementiert eine Schnittstelle für mehrere Task-Controller.&lt;br /&gt;
* JControllerLegacy::_construct nimmt nun zusätzliche Argumente an. Wenn Sie zuvor ein Controller-Objekt über JControllerLegacy::getInstance erhalten haben, müssen Sie Ihren Code nicht ändern.&lt;br /&gt;
** Parameter 2: Eine optionale MVCFactoryInterface-Instanz.&lt;br /&gt;
** Parameter 3: Eine optionale CMSApplicationInterface-Instanz.&lt;br /&gt;
** Parameter 4: Eine optionale Input-Instanz&lt;br /&gt;
** Parameter 5: Eine optionale FormFactoryInterface-Instanz.&lt;br /&gt;
* JControllerForm verwendet nun das StringInflector-Paket, um die Listenansicht zu bestimmen. Dies sollte die Möglichkeit verbessern, die Listenansicht von mehr Ansichtsnamen zu erraten. Wenn Extension-Entwickler feststellen, dass ihre Listenansicht nicht mehr gefunden wird, sollte man die Klasseneigenschaft `view_list` manuell in seinem Controller setzen.&lt;br /&gt;
&lt;br /&gt;
==== Legacy View ====&lt;br /&gt;
* JViewLegacy wurde aus der Legacy-Schicht entfernt, und wir beabsichtigen nicht mehr, es oder seine Unterklassen in naher Zukunft zu entfernen.&lt;br /&gt;
* JViewHtml wurde in zwei Klassen unterteilt - AbstractView und HtmlView. Die abstrakte Sicht enthält die Logik für den Zugriff auf Modelle und die Ermittlung des Namens der Sicht und ist als Basisklasse für Nicht-Html-Sichten gedacht. Die Html-Sicht enthält die gleiche Logik wie bisher.&lt;br /&gt;
* Es gibt jetzt zwei Unterklassen von JViewHtml - \Joomla\CMS\MVC\View\ListView und \Joomla\CMS\MVC\View\FormView, die entwickelt wurden, um die Entwicklung von Listen- und Formularansichten zu beschleunigen und die Code-Duplizierung zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
=== Session ===&lt;br /&gt;
Das Session-Paket wurde grundlegend überarbeitet, um das Session-Paket des Frameworks zu nutzen.  Diese Änderung betrifft in erster Linie die Interna des Pakets; Änderungen an der primären öffentlichen API über die JSession-Klasse sind minimal.&lt;br /&gt;
&lt;br /&gt;
=== String ===&lt;br /&gt;
Der alte Alias der JString-Klasse wurde entfernt. Benutze stattdessen  \Joomla\String\StringHelper.&lt;br /&gt;
&lt;br /&gt;
==== Removed Classes and Interfaces ====&lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 5.0 entfernt:&lt;br /&gt;
*JSessionExceptionUnsupported&lt;br /&gt;
*JSessionHandlerInterface&lt;br /&gt;
*JSessionHandlerJoomla&lt;br /&gt;
*JSessionHandlerNative&lt;br /&gt;
*JSessionStorage&lt;br /&gt;
*JSessionStorageApc&lt;br /&gt;
*JSessionStorageDatabase&lt;br /&gt;
*JSessionStorageMemcache&lt;br /&gt;
*JSessionStorageMemcached&lt;br /&gt;
*JSessionStorageNone&lt;br /&gt;
*JSessionStorageWincache&lt;br /&gt;
*JSessionStorageXcache&lt;br /&gt;
&lt;br /&gt;
==== JSession ====&lt;br /&gt;
Methoden haben eine modifizierte Signatur und es existiert eine Kompatibilitätsschicht, die beim Übergang hilft.&lt;br /&gt;
&lt;br /&gt;
===== Namespace Parameter Deprecated =====&lt;br /&gt;
Die Methoden get, set, has und clear unterstützten zuvor einen Namensraumparameter.  Dieser Parameter ist nun veraltet, der Namensraum sollte dem Namen vorangestellt werden, bevor diese Methoden aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
===== JSession::clear() Repurposed =====&lt;br /&gt;
In JSession wird diese Methode verwendet, um einen einzelnen Schlüssel zu entfernen.  Wenn diese Methode mit Parametern aufgerufen wird, ruft sie die neue Joomla\Session\Session\Session::remove() Methode auf.&lt;br /&gt;
&lt;br /&gt;
===== JSession::getInstance() Deprecated =====&lt;br /&gt;
Die Singleton getInstance()-Methode ist veraltet.  Das Session-Objekt sollte stattdessen aus der aktiven Anwendung oder dem Dependency Injection Container geholt werden.&lt;br /&gt;
&lt;br /&gt;
===== Session Handlers =====&lt;br /&gt;
In Joomla! 3.x und früher wurden Session-Handler durch die Klasse JSessionStorage und ihre Unterklassen repräsentiert. In Joomla! 4.0 sind Session-Handler nun Implementierungen von Joomla\Session\HandlerInterface (das eine Erweiterung von PHP&#039;s[https://secure.php.net/manual/en/class.sessionhandlerinterface.php SessionHandlerInterface] ist. Alle Handler, die in Joomla! 3.x unterstützt wurden, sind in 4.0 weiterhin verfügbar, zusätzlich zu zwei weiteren Handlern; ein Handler, der die APCu-Erweiterung nativ implementiert und ein Handler, der Redis unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Social Media Libraries ===&lt;br /&gt;
Die Pakete facebook, github, google, linkedin, openstreetmap, mediawiki und twitter wurden alle aus dem CMS entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Klassen ohne Austausch entfernt ===&lt;br /&gt;
* JNode&lt;br /&gt;
* JTree&lt;br /&gt;
* JGrid&lt;br /&gt;
* JError (verwende native Ausnahmen, wenn eine Fehlerbehandlung erforderlich ist)&lt;br /&gt;
&lt;br /&gt;
==== Utilities ==== &lt;br /&gt;
&lt;br /&gt;
===== Entfernte Klassen und Interfaces ===== &lt;br /&gt;
Die folgenden Klassen und Interfaces wurden in Joomla! 4.0 entfernt:&lt;br /&gt;
*JArrayHelper&lt;br /&gt;
verwende stattdessen Joomla\Utilities\ArrayHelper;.&lt;br /&gt;
&lt;br /&gt;
== External Libraries ==&lt;br /&gt;
Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;br /&gt;
&lt;br /&gt;
=== PHPMailer ===&lt;br /&gt;
Joomla! 4.0 ships with PHPMailer 6.0.  Please review [https://github.com/PHPMailer/PHPMailer/blob/6.0/UPGRADING.md the upgrading guide] for relevant changes.&lt;br /&gt;
&lt;br /&gt;
=== PHPUTF8 ===&lt;br /&gt;
At Joomla! 3.4, the PHPUTF8 library lived in two locations in the Joomla! package; `libraries/phputf8` and `libraries/vendor/joomla/string/src/phputf8`.  In Joomla! 4.0, the copy of the library in `libraries/phputf8` has been removed.  The Joomla\String\StringHelper class exposes many of the library&#039;s functions and the Composer autoloader definition imports much of the library as well, however, if you need a feature that is not already included then you should import the required functions from the `libraries/vendor/joomla/string/src/phputf8` path.&lt;br /&gt;
&lt;br /&gt;
=== SimplePie ===&lt;br /&gt;
The SimplePie library is no longer included with Joomla! 4.0.&lt;br /&gt;
&lt;br /&gt;
=== jQuery ===&lt;br /&gt;
Joomla! 4.0 ships with jQuery 3.  Please review [https://jquery.com/upgrade-guide/3.0/ the upgrading guide] for relevant changes. Note that we are not including jQuery Migrate anymore either. We recommend using it locally to help debug your code if there are any issues.&lt;br /&gt;
&lt;br /&gt;
=== Bootstrap ===&lt;br /&gt;
Joomla! 4.0 ships with Bootstrap 4. Bootstrap 2.3.2 has been removed, however we have left some BS2 classes in to ease the migration (e.g. The old BS2 element-invisible still exists for screenreaders) &lt;br /&gt;
&lt;br /&gt;
=== FOF ===&lt;br /&gt;
FOF 2.x has been removed.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
All the Joomla! 3 templates - ISIS and Hathor in the backend, and protostar and Beeze in the frontend are no longer supported. The new 4.0 backend template is called Atum and the frontend template is called Cassiopeia.&lt;br /&gt;
&lt;br /&gt;
As a consequence, all extensions must migrate to the new Bootstrap 4 style, away from the current Bootstrap 2.3.2 implementation. For more information about Bootstrap 4: [http://getbootstrap.com/docs/4.0/getting-started/introduction/]. For more information about Bootstrap 2.3.2: [http://getbootstrap.com/2.3.2/]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== Media in Libraries ===&lt;br /&gt;
No media is allowed in the libraries root folder in the CMS - all assets associated with Joomla libraries should be put in the media folder as per best practices. Direct access is blocked with a .htaccess and web.config file in the root of the libraries directory.&lt;br /&gt;
&lt;br /&gt;
=== Bin ===&lt;br /&gt;
Removing the keychain with 4.0 has resulted in the removal of the entire Bin directory as it only contained keychain.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
* All components have been namespaced and directories reworked accordingly. For more information about this read the tutorial on building a component in Joomla 4&lt;br /&gt;
* com_admin profile view has been removed (this appears to have been created historically due to issues accessing com_users. This is no longer the case so all user edits go through com_users edit user view in the backend)&lt;br /&gt;
* com_actionlogs php 5.5 backfill code has been removed and accordingly &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;ActionlogsHelper::getCsvData()&amp;lt;/source&amp;gt; is now type hinted to return a &amp;lt;source inline lang=&amp;quot;php&amp;quot;&amp;gt;Generator&amp;lt;/source&amp;gt; object&lt;br /&gt;
* Core components have had URL Routing &#039;Legacy&#039; mode removed from Joomla 3.7. You should either use your .htaccess file or the redirect component to fix any internal URLs that change. You can try the &#039;Modern&#039; mode in Joomla 3 by following the instructions [[S:MyLanguage/J3.x:New_Routing_System|here]]&lt;br /&gt;
&lt;br /&gt;
=== Plugins === &lt;br /&gt;
* The gmail authentication plugin has been removed. For more information please read [https://developer.joomla.org/news/724-removal-of-the-gmail-authentication-plugin-as-of-joomla-4-0.html this blog post]&lt;br /&gt;
* Recaptcha v1 support has been fully removed from the captcha plugin - this has no longer worked since Q2 2018 due to google dropping support for it.&lt;br /&gt;
* The Recaptcha plugin now uses google&#039;s official php library for captcha under the hood&lt;br /&gt;
* For plugins using the 3.x compatibility layer the name result is a protected property for both input parameters and return values. For information on the new recommended approach to plugins please read [[S:MyLanguage/J4.x:Creating_a_Plugin_for_Joomla]]&lt;br /&gt;
* For plugins using the 3.x compatibility layer any type hints for events that require a class - the class *must* be autoloaded before the plugin is instantiated&lt;br /&gt;
* The onContentBeforeSave event now requires the data parameter (this has been passed in \Joomla\CMS\MVC\Model\LegacyModel since 3.7 but is now passed in consistently by core extensions and used by the core Joomla content plugin)&lt;br /&gt;
&lt;br /&gt;
=== Administrator Helpers ===&lt;br /&gt;
* JAdministratorHelper has been removed without replacement (it&#039;s been merged into JApplicationAdministrator)&lt;br /&gt;
* JSubMenuHelper wurde ersatzlos entfernt (verwende stattdessen die JHtmlSidebar - verfügbar seit 3.0).&lt;br /&gt;
* ToolbarHelper wurde in das Hauptbibliotheksverzeichnis verschoben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
* Das Administratormodul &amp;quot;Untermenü&amp;quot; wurde entfernt.&lt;br /&gt;
&lt;br /&gt;
=== Fehlerbehandlung ===&lt;br /&gt;
* Joomla wird nun die PHP-Fehler E_USER_DEPRECATED behandeln und an JLog übergeben - dies ist nützlich für die Behandlung von Verwerfungen in vielen PHP-Bibliotheken von Drittanbietern (beachte, dass es das Laden der Seite blockiert, wenn der Debug-Modus aktiviert ist).&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler arbeitet jetzt nur noch mit Ausnahmen, die in JApplication::execute ausgegeben werden. Wir verwenden nun den ErrorHandler von Symfony, wenn dies fehlschlägt oder Ausnahmen außerhalb davon ausgegeben werden. Wir erwarten, dass dies für die meisten Benutzer minimale Auswirkungen hat und in vielen Fällen eine hilfreichere Meldung geben sollte als der traditionelle Fehler &amp;quot;Fehler beim Anzeigen der Fehlerseite&amp;quot; für Benutzer, wenn die Dinge sehr schlecht laufen.&lt;br /&gt;
* Joomla\CMS\Exception\Exception\ExceptionHandler ist jetzt formatbewusst und wird Fehler in html, json, xml, feed oder client-bewussten Formaten anzeigen.&lt;br /&gt;
* Die Joomla\CMS\Exception\ExceptionHandler::render() Signatur wurde geändert, um den Throwable Typ-Hinweis aufzunehmen. Vor 3.5, als PHP 7-Unterstützung hinzugefügt wurde, wurde dies als Exception typisiert, und seit 3.5 wurde im Code selbst typgeprüft.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Compatibility{{#translation:}}]]&lt;br /&gt;
[[Category:Development{{#translation:}}]]&lt;br /&gt;
[[Category:Platform{{#translation:}}]]&lt;br /&gt;
[[Category:Migration{{#translation:}}]]&lt;br /&gt;
[[Category:Update Working Group{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.x{{#translation:}}]]&lt;br /&gt;
[[Category:Joomla! 4.0{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/84/de&amp;diff=638904</id>
		<title>Translations:Potential backward compatibility issues in Joomla 4/84/de</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Potential_backward_compatibility_issues_in_Joomla_4/84/de&amp;diff=638904"/>
		<updated>2019-10-19T17:14:33Z</updated>

		<summary type="html">&lt;p&gt;Jehacgn: Created page with &amp;quot;Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die folgenden Änderungen wurden an den externen Bibliotheken vorgenommen, die Joomla! pakt und versendet.&lt;/div&gt;</summary>
		<author><name>Jehacgn</name></author>
	</entry>
</feed>