Hinweis: Ich spreche _wp_get_current_user();
nicht wp_get_current_user()
.
Wenn Sie die Funktion überprüfen, _wp_get_current_user();
sehen Sie die folgende Anweisung:
Der Zugriff dieser Funktion ist als privat markiert. Dies bedeutet, dass es nicht für Plugin- oder Theme-Entwickler vorgesehen ist, sondern nur für andere Kernfunktionen. Der Vollständigkeit halber ist es hier aufgeführt. Verwenden Sie stattdessen wp_get_current_user ().
Warum hat WordPress diese Art von privaten Funktionen? Warum erlaubt WordPress nicht, diese Art von Funktionen für WordPress-Plugins oder Theme-Entwickler zu verwenden?
Antworten:
Es ist ganz normal, dass Code nicht Teil der öffentlichen API ist.
Aber ein Großteil des WP-Codes ist uralt und prozedural. Es gibt keine technischen Möglichkeiten, eine private Funktion zu erstellen.
Diese sind semantisch privat, das heißt, WP möchte nicht, dass Sie sie verwenden, aber es kann Ihnen dies nicht verbieten. Es gibt eine lange Geschichte von "privaten" WP-APIs, die in der Praxis von Erweiterungen aktiv verwendet werden.
Die Gründe für die Erklärung von etwas Privatem variieren von Fall zu Fall. In diesem speziellen Fall, den Sie angesprochen haben, scheint der Grund dafür zu sein, dass die "öffentliche" Version steckbar ist. Wenn Sie also die Implementierung auf eine "private" Version verschieben, können Sie das Original einfacher / mit weniger Problemen ersetzen.
quelle
Einfach ausgedrückt, Entwickler entscheiden sich dafür, diese internen Funktionen "privat" zu machen, weil sie keine öffentliche Unterstützung für sie bereitstellen möchten. Zum Beispiel garantieren sie nicht, dass Funktionsargumente in ihrer Platzierung oder sogar Existenz von Update zu Update konsistent bleiben.
Nicht, dass dies tatsächlich viele Entwickler davon abhält, "private" Funktionen zu verwenden ...
quelle
Es war mir zunächst nicht absolut klar, also musste ich tiefer gehen. Wenn Sie zum Beispiel die großartige
wp-includes/user.php
Datei nehmen, finden Sie dort keine einzige PHP-Klassendefinition.Sie finden jedoch die
_wp_get_current_user()
Funktion, die uns interessiert. Was Sie sehen,@access private
ist nur ein Tipp für den PHP-Dokumentgenerator.Dies weist auch darauf hin, dass diese Funktion in Zukunft möglicherweise zu einer privaten Funktion innerhalb einer Klasse wird.
Das Konzept einer privaten Funktion existiert nur, wenn Sie PHP-Klassen haben und dies mit PHP 5 oder höher (seitdem ist PHP objektorientiert). Das Konzept heißt Kapselung.
WordPress verbessert den PHP-Code schrittweise durch die Einführung von Klassen, aber der Prozess wird nicht über Nacht stattfinden.
quelle