__halt_compiler の使い方

Pharなどで使われていPHP::__halt_compiler の使い方のメモ。

要点

__halt_compiler()
  • PHPコンパイラを停止するコンパイル時命令
  • コンパイラ命令の1つ
  • 一番外側のスコープで実行可能
__COMPILER_HALT_OFFSET__
  • __halt_compiler が使われた翻訳単位で使用可能なマジック定数
  • コンパイル停止オフセット

利用例

スクリプトファイル自身の末尾をコンパイル対象外にしてデータ領域に当てプログラム自身から読み込む。

1
2
3
<?php
echo file_get_contents(__FILE__, false, null, __COMPILER_HALT_OFFSET__);
__halt_compiler();DATA PART

用途

Phar が生成するアーカイブファイル内部で使われている。 composer.phar などのインストーラは単一ファイルにデータ領域, 実行領域を持ちたい事がある。

comments powered by Disqus