Frage Mehrere PHP-Skripte in einer einzigen Datei zusammenführen


Ich habe ein PHP-Skript, das eine oder zwei andere Bibliotheken enthält.include' Erklärung. Um es leichter portierbar zu machen, möchte ich irgendwie das Skript und die included Bibliotheken es in ein einziges PHP-Skript (auf die gleiche Weise wie ack enthält alle Perl-Abhängigkeiten in einer Datei). Gibt es einen einfachen Weg, dies in PHP zu tun?

Klärung: Das Kompilieren zu einer Windows-ausführbaren Datei könnte (eine Teil davon) eine akzeptable Lösung sein, aber das Skript muss noch auf * nix laufen, wo es besser ist, PHP-Quellcode mit '#!/usr/bin/env php' oben.

Ich möchte in der Lage sein, eine einzelne Datei irgendwo auf jedem Betriebssystem in den $ PATH zu legen und es funktionieren zu lassen, ohne dass zusätzliche PHP-Bibliotheken installiert werden müssen.


17
2017-09-23 00:08


Ursprung


Antworten:


Neuere Versionen von PHP unterstützen ein Konzept ähnlich wie Jar-Dateien in Java. Sieh dir das an phar. Sie könnten alle Ihre Anwendungsdateien in ein einziges Archiv packen und das ausführen.


11
2017-09-23 02:06



Die PHP-Pakete ScriptJoiner oder besser JuggleCode könnten helfen:

Beide basieren auf PHP-Parser (http://packagist.org/packages/nikic/php-parser), wodurch es sehr einfach ist, Skriptdateien zu verbinden.


6
2017-09-13 08:08



Dafür gibt es keinen eingebauten Weg. Ich würde empfehlen, den Code in ein Verzeichnis zu packen und so zu verteilen. Ich mache das mit PHP, setze den Code in ein Verzeichnis "something.module" und durchlaufe dann ein Modulverzeichnis, einschließlich der Hauptdatei unter jedem .module-Verzeichnis. Aber für etwas einfacheres könnte man einfach eine Struktur haben wie:

my_package/
  my_package.php
  include1.php
  include2.php

my_package.php würde include(realpath(dirname(__FILE__).'/inclue1.php')). Alle anderen Scrits müssten einfach include('my_packahe/my_package.php')


4
2017-09-23 00:10



Manuell entfernen Sie einfach alle Referenzen von include / require und "verketten" Sie die Dateien zusammen. Sie sollten auch die offenen und End-Tags ('<? php', "?>") vor der Verkettung entfernen und sie in der endgültigen Datei hinzufügen.

Für ein oder zwei kleine Bibliotheken sollte es - hoffentlich - "einfach funktionieren" ...


3
2017-09-23 00:16



phc erlaubt dies. Lauf es einfach mit dem --include Flag, und es wird alle Ihren Code (na ja, jedes Argument zu einem include, requireusw.) in eine einzige PHP-Datei.

Wenn Sie möchten, kann es es auch kompilieren, aber das ist nicht erforderlich, um sie alle in einer einzigen Datei zu kombinieren.


2
2017-09-26 13:07



Sie könnten ein benutzerdefiniertes Skript schreiben, das alle Dateien öffnet, die öffnenden und schließenden Tags entfernt und sie zusammenfügt und als eine Datei speichert. sollte ziemlich einfach sein.

Oder Sie können einen PHP-Compiler verwenden. Es wird ein bisschen mehr als das, was Sie suchen, aber wenn Sie nur eine Datei möchten, führen Sie Ihr Entwicklungsprojekt durch eine dieser.

Sie können auch den eingebauten php-Bytecode-Compiler verwenden, um alles in Byte-Code zu kompilieren und in einer Datei zu speichern.


1
2017-09-23 01:03