私は現在、フレームワークの拡張メカニズムを実験しています。各モジュールは、少なくとも1つのPHPファイル(単一のクラスを定義)とXSLスタイルシートで構成されていますが、他の複数のファイルが含まれる可能性があるため、すぐにPharsを使用することを考えました。
すべてがうまく機能していますcreateDefaultStub()
が、次のスニペットのようにPharを使用せずに構築した場合、結果は4分の1のサイズになり、圧縮バージョンよりも小さくなります。
$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);
ファイルサイズの例:
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)
Pharは、モジュール固有のファイルをまとめて保持するために使用され、フレームワークに含まれます。スタンドアロンで実行しても、このコンテキストでは意味がありません。私の質問は、最小限のスタブコードを使用することで、もしあれば、何を見逃しているのかということだと思います。そして、なぜ圧縮バージョンは常に同じサイズなのですか?