Ich experimentiere derzeit mit einem Erweiterungsmechanismus für mein Framework. Jedes Modul besteht aus mindestens einer PHP-Datei (die eine einzelne Klasse definiert) und einem XSL-Stylesheet, aber möglicherweise könnten mehrere andere Dateien beteiligt sein, so dass ich sofort dachte, Phars zu verwenden.Minimal PHP Phar Stub
Alles spielt gut zusammen, aber ich merkte, wenn ich nicht createDefaultStub()
verwendet habe und konstruiert stattdessen die Phar wie im folgenden Code-Schnipsel dann ist das Ergebnis ein Viertel der Größe - und ist kleiner als die komprimierte Version.
$phar = new Phar('Example.phar', 0, 'Example.phar');
$phar->buildFromDirectory(__DIR__ . '/src');
$phar->setStub('<?php __HALT_COMPILER();');
$phar->setSignatureAlgorithm(Phar::SHA256);
$phar->compress(Phar::GZ);
Beispiel Dateigrößen:
8799 14 Dec 09:37 ExampleCog.phar (using createDefaultStub())
2143 14 Dec 10:08 ExampleCog.phar (using __HALT_COMPILER())
3373 14 Dec 10:08 ExampleCog.phar.gz (consistent with either method)
Die Phar wird einfach verwendet werden modulspezifische Dateien gebündelt zusammen zu halten und wird in einem Rahmen aufgenommen werden - läuft Standalone keinen Sinn machen würde, nicht in dieser Kontext. Ich denke, meine Frage ist, was verpasse ich - wenn überhaupt - mit dem minimalen Stub-Code? Und warum hat die komprimierte Version immer die gleiche Größe?
+1: Sehr hilfreich und gut geschrieben. –