ヒント: __COMPILER_HALT_OFFSET__ 定数は、データ バイトの先頭を取得するために使用されます。 __halt_compiler() を使用する必要があります。 次に、php インストール ファイルの具体的な例について説明します:PHPマニュアルの紹介によると、この関数はインストールファイルと同様に、スクリプトにデータを埋め込むためによく使用されます。つまり、__halt_compiler(); の後に、バイナリ ノイズ (クラッター)、圧縮ファイル、その他の種類のファイルなど、コンパイルする必要のないファイルをいくつか置きます。次のコードのようになります。
// open this file $fp = fopen(__FILE__, 'r'); // seek file pointer to data fseek($fp, __COMPILER_HALT_OFFSET__); // and output it var_dump(stream_get_contents($fp)); // the end of the script execution __halt_compiler(); the installation data (eg. tar, gz, PHP, etc.)ログイン後にコピー
php5.1 で __halt_compiler() が導入される前は、gzde flat() を使用して圧縮されたファイルには、多くの場合、これでは解析できないファイルが含まれていました。 PHP インタプリタ (parser) が特別な ASCII コードを読み取るため、エラーが発生します。エラーを防ぐために、base64_encode() を使用して gzdeflate() によって生成されたデータをエンコードします。これにより、ファイル サイズが約 33% 増加します。これはメモリの無駄遣いです。
__halt_compiler() では、base64_encode() を使用してエンコードすることができなくなり、データを __halt_compiler() の後に直接配置するため、コンパイルされず、結果が間違ってしまいます。りー$packed = base64_encode(gzdeflate('the old package')); //unpacked $unpacked = base64_decode(gzinflate($packed));ログイン後にコピー
上記は、内容の側面も含めて __halt_compiler の概要をいくつか紹介したもので、PHP チュートリアルに興味のある友人に役立つことを願っています。