International PHP Conference Berlin 2023

Rutina de interoperabilidad del fichero Phar

Una rutina de interoperabilidad de un Phar es un simple fichero PHP. La rutina de interoperabilidad más pequeña posible es:

<?php __HALT_COMPILER();

Una rutina de interoperabilidad debe contener como mínimo el token __HALT_COMPILER(); en su conclusión. Normalmente, una rutina de interoperabilidad contendrá funcionalidad cargadora como:

<?php
Phar
::mapPhar();
include 
'phar://miphar.phar/index.php';
__HALT_COMPILER();

No existen restricciones para el contenido de una rutina de interoperabilidad de Phar, excepto el requerimiento de que concluya con __HALT_COMPILER();. La etiqueta de cierre de PHP

?>
se puede incluir u omitir, pero no puede haber más de un espacio entre el ; y la etiqueta de cierre
?>
o la extensión phar no podrá procesar el manifiesto del archivo Phar.

En un archivo phar basado en tar o zip, la rutina de interoperabilidad es alamcenada en el fichero .phar/stub.php. La rutina de interoperabilidad predeterminada para archivos Phar basados en phar contiene aproximadamente 7k de código para extraer el contenido del phar y ejecutarlo. Véase Phar::createDefaultStub() para más información.

El alias de phar se alamcena en un archivo phar basado en zip en el fichero .phar/alias.txt como texto plano.

add a note

User Contributed Notes 1 note

up
1
Frank Li
2 months ago
> but there can be no more than 1 space between the ; and the close tag

there must be **exactly** 1 space, or "\n".
below is how php trims the ending tag.

> seek_for("__HALT_COMPILER();");
> read_3_into(buffer);
> if ((*buffer == ' ' || *buffer == '\n') && *(buffer + 1) == '?' && *(buffer + 2) == '>') {
> do_things.
To Top