2011-08-16 29 views
6

我使用命令行中的PHP,並試圖將數據嵌入到源代碼文件中。我可以在Ruby中使用__END__構造,在Perl中使用__DATA__構造,但我似乎無法找到在PHP中使用它的方法。目標是能夠將數據嵌入到PHP文件中,然後在執行過程中將數據讀入數組進行處理。我怎樣才能在PHP中做到這一點?由於數據和文件執行的設置方式,將數據包含在單獨的文件中並不是一個好的選擇。在PHP中等效於Ruby的`__END__`或Perl的`__DATA__`構造

+0

**參見**:http://stackoverflow.com/questions/2059713 – dreftymac

回答

7

您可以使用__halt_compiler()其目的是,正如其名字,正是制止編譯器用於將數據嵌入到文件的剩餘部分的目的。

一個基本的例子將是:

<?php 

// Do something boring here 

$data = file_get_contents(__FILE__, FALSE, NULL, __COMPILER_HALT_OFFSET__); 
$obj = json_decode($data, TRUE); 
echo $obj['message']; 

__halt_compiler(); 
{"status":"example", "message":"hello, __halt_compiler!"} 

的輸出,正如人們所期望,是hello, __halt_compiler!

3

您可以使用__halt_compiler()並在該行代碼之後嵌入數據。文檔中有一個很好的例子。

4

使用__halt_compiler()結構:

<?php 

echo 'hello!'; 
__halt_compiler(); 
echo 'bar''; this will not cause a parse error