2011-08-16 14 views
6

Estoy usando PHP desde la línea de comandos y estoy tratando de incorporar datos en un archivo de código fuente. Puedo hacerlo en Ruby usando el constructo __END__ y en Perl usando el constructo __DATA__, pero parece que no puedo encontrar la forma de hacerlo en PHP. El objetivo es poder incrustar datos en el archivo PHP, y luego durante la ejecución, leer los datos en una matriz para su procesamiento. ¿Cómo puedo hacer esto en PHP? Incluir los datos en un archivo separado no es realmente una buena opción debido a la forma en que se configuran los datos y la ejecución del archivo.Constructo equivalente en PHP al `__END__` de Ruby o al` __DATA__` de Perl

+0

** ** Ver también: http://stackoverflow.com/questions/2059713 – dreftymac

Respuesta

7

Puede utilizar __halt_compiler() cuya finalidad es, como su nombre lo dice, detener el compilador precisamente con el fin de insertar datos en el resto del archivo.

Un ejemplo básico sería:

<?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!"} 

La salida, como cabría esperar, es hello, __halt_compiler!

3

puede usar __halt_compiler() e incrustar datos después de esa línea de código. Hay un excelente ejemplo en la documentación.

4

Utilice la __halt_compiler() construcción:

<?php 

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