Ich habe mehrere Funktionen, die ich geschrieben habe und regelmäßig auf meinen Servern verwende, gibt es eine Möglichkeit, sie zum Kern hinzuzufügen, damit ich sie nicht aus externen Dateien einbinden muss?
Ich verwende PHP5
Ich habe mehrere Funktionen, die ich geschrieben habe und regelmäßig auf meinen Servern verwende, gibt es eine Möglichkeit, sie zum Kern hinzuzufügen, damit ich sie nicht aus externen Dateien einbinden muss?
Ich verwende PHP5
Sie könnten Ihre Bibliotheken als PEAR-Erweiterung hinzufügen. Dann könnten Sie es zu Ihrem lokalen PEAR-Repository hinzufügen. Pear wird dem Standardinclude-Pfad in der php.ini hinzugefügt. Danach können Sie einfach "pear install myextension" auf Ihren Maschinen verwenden.
Wenn es sich um C-Funktionen handelt, mit denen Sie in php interagieren (php-Erweiterungen), können Sie etwas Ähnliches mit PECL tun.
Nur um auf PEAR näher einzugehen - du musst deinen Code nicht an PEAR senden, aber du kannst trotzdem deine eigenen PEAR-Style-Pakete erstellen. Du könntest sogar einen privaten Kanal für die Verteilung einrichten.
Ich habe das schon einmal gemacht.. Es ist ein ziemlich umfangreicher Prozess, aber nicht zu schlimm. Dieser Artikel auf zend.com sollte Ihnen alles sagen, was Sie wissen müssen:
http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/
Bearbeiten: Ich sollte hinzufügen, dass es bessere Möglichkeiten gibt, um das Wesentliche dessen zu erreichen, was Sie versuchen zu tun. Bedenken Sie, dass dadurch der Namespace von PHP (der bereits sehr überladen ist) weiter durcheinander geraten wird. Es ist wahrscheinlich besser, einfach eine globale Include-Datei zu erstellen, die alle Ihre am häufigsten verwendeten Funktionen enthält, die Sie überall dort einfügen, wo Sie sie benötigen.
Bearbeiten2: Bei erneutem Durchlesen Ihrer ursprünglichen Frage haben Sie gesagt, dass Sie das nicht tun möchten, aber ich denke immer noch, dass dies wahrscheinlich der beste Weg ist. Aber viel Glück mit dem Erweiterungsansatz.
Wenn Sie möchten, dass Ihre Funktion immer verfügbar ist, ohne sie einzuschließen, tun Sie dies:
Erstellen Sie Ihre Funktion in einer PHP-Datei.
Suchen Sie in Ihrer php.ini nach der Option "auto_prepend_file" und fügen Sie Ihre PHP-Datei dieser Zeile hinzu, wie folgt: auto_prepend_file = "/pfad/zu/meiner_superglobalen_funktion.php"
Oder wenn Sie ohne Pfad schreiben wie folgt: auto_prepend_file = "meine_superglobale_funktion.php" Wird in Ihrem include_path in php.ini nach der Datei gesucht.
Warum ist es eigentlich so schwer, die Dateien genau dort einzufügen, wo du sie brauchst?
Ich nehme an, die auto_prepend_file PHP.ini-Direktive könnte funktionieren. Aber es wird nicht wirklich empfohlen.
Ehrlich gesagt ist es nervig, es gerade jetzt zu pflegen. Es gibt eine Datei in der Standard-Include-Klasse, die mehr als 40 Includes enthält, um alle Funktionen zu erhalten, und es wird langsam alt, wenn sie im Kern wären, müsste ich mich auch nicht daran erinnern, die Include-Datei einzuschließen.
Wenn Sie Autoload haben, können Sie die Funktionen als statische Methoden einer Klasse wie My_Functions verschieben.
Oder um sie in mehrere Dateien zu unterteilen, können Sie My_Functions_Math verwenden. Dann müssen Sie nur die Funktionen laden, die Sie benötigen. Und mit Autoload müssen Sie sich keine Gedanken über das Einbinden von Dateien machen.
Sie können Namespace-Funktionen nicht mit Autoload laden, daher müssen die Funktionen, wenn Sie Autoload verwenden möchten, statische Methoden in einer Klasse sein. Sie können jedoch den Namespace nutzen, um es einfacher zu machen, die Klasse in Zukunft zu ersetzen und/oder den langen Klassennamen zu verkürzen. Beispiel:
use My\Functions\Math as Math;
Math::calcThis($i);
Namensräume sind für PHP 5.3, was eine Vorabversion von PHP 6 ist. Ich denke, der Autor der Frage hatte PHP 5.2 im Sinn.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Kannst du genauer sein? Meinst du Funktionen, die in PHP geschrieben sind oder Funktionen, die in C geschrieben sind und die du von PHP aus verwendest (PHP-Erweiterungen)?
0 Stimmen
Meinst du PHP 5.2.x oder PHP 5.3?
0 Stimmen
Nun, das variiert, ist aber irrelevant, es ist kein 4 und kein dev6.