✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Vermeidung von class_exists in objektorientiertem WordPress-Code

5

Wenn Sie objektorientierten Code für WordPress schreiben (normalerweise im Kontext von Plugins), stoßen Sie wahrscheinlich auf eine class_exists-Überprüfung, bevor Sie eine Klasse initialisieren. Aber wir sollten an dieser Stelle anfangen, class_exists in einem Großteil unseres Codes zu vermeiden (mit ein paar Ausnahmen, die ich unten skizzieren werde).

Abhängig von der verwendeten PHP-Version ist dies sinnvoll. Oder es tat es einmal. Ab PHP 5.3.0 ist dies nicht mehr erforderlich. Stattdessen ist es besser, Namespaces zu verwenden.

class_exists vermeiden

Sie können alle Anforderungen für verschiedene Versionen von WordPress auf dieser Seite sehen  . Wenn Sie also mit älteren Versionen von WordPress arbeiten, könnte sich der gesamte class_exists-Check lohnen.

Trotzdem gibt es einen wichtigen Hinweis :

Hinweis: Wenn du dich in einer Legacy-Umgebung befindest, in der du nur ältere PHP- oder MySQL-Versionen hast, funktioniert WordPress auch mit PHP 5.2.4+ und MySQL 5.0+, aber diese Versionen haben das offizielle End-of-Life erreicht und können daher deine Website anfällig machen Sicherheitslücken.

Aber für die meisten von uns unterstützen moderne Hosting-Umgebungen mindestens PHP 5.3.0, wenn nicht höher, und deshalb müssen wir class_exists nicht verwenden.

Das heißt, es ist nicht ungewöhnlich, so etwas zu sehen :

Oder so :

Vor Jahren habe ich auch solchen Code geschrieben. Manchmal war es eine Schnittstelle zu einer bereits bestehenden Codebasis. Andere Male lag es daran, dass ich es nicht besser wusste. Die Sache ist, dass dies zu etwas geworden ist, das wir in WordPress-basiertem Code sehen, wenn wir es nicht verwenden müssen.

Tatsächlich würde ich argumentieren, dass wir es nicht mehr verwenden sollten.

Aber je mehr Code Sie schreiben und je mehr Code Sie lesen, desto mehr lernen Sie, richtig? Das ist ein Teil des ganzen Grundes für Namespaces und automatisches Laden.

Wie würde also der obige Code geschrieben werden?

Vielleicht so :

Dennoch wirft dies für einige die Frage auf: Wie helfen Namespaces anstelle von class_exists?

Wenn dieselbe Klasse in einem Namespace vorhanden ist, liegt im Idealfall ein Problem mit dem Namespace vor. Denken Sie daran, dass Sie sich einen Namensraum wie ein Paket aus Einzelstücken vorstellen können. Und weil sie einzigartig sind, sollte es niemals ein anderes Stück oder in dieser Klasse eine andere Klasse geben, die genau so ist.

Anstatt class_exists-Prüfungen zu verwenden, sollten Sie zu diesem Zweck Namespaces verwenden. Natürlich sage ich nicht, dass Sie zurückgehen und Ihren gesamten Code umgestalten sollen – das habe ich nicht getan – aber das bedeutet nicht, dass der Code, den ich schreibe oder überprüfe, die Verwendung von oder Empfehlungen für enthält.

Es ist eine einfache Änderung, die einen großen Beitrag dazu leisten kann, den Code leichter lesbar zu halten, mit weniger Bedingungen übersät zu sein (einen Beitrag für ein anderes Mal) und viel besser organisiert zu halten.

Aufnahmequelle: tommcfarlin.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen