El siguiente ejemplo muestra el acceso a un fichero de configuración externo como si fuera
un camino dentro del archivo phar.
Primero, el código dentro del archivo phar:
<?php
$configuration = simplexml_load_string(file_get_contents(
Phar::running(false) . '/config.xml'));
?>
Luego el código externo utilizado para montar el fichero de configuración:
<?php
// se comienza configurando la asociación entre el fichero config.xml abstracto
// y el que está en el disco
Phar::mount('phar://config.xml', '/home/example/config.xml');
// ahora se lanza la aplicación
include '/ruta/al/archivo.phar';
?>
Otro método es colocar el código de montaje dentro del contenedor de carga del archivo phar.
Aquí hay un ejemplo para configurar un fichero de configuración por defecto si no se hace ninguna configuración de usuario:
<?php
// se comienza configurando la asociación entre el fichero config.xml abstracto
// y el que está en el disco
if (defined('EXTERNAL_CONFIG')) {
Phar::mount('config.xml', EXTERNAL_CONFIG);
if (file_exists(__DIR__ . '/extra_config.xml')) {
Phar::mount('extra.xml', __DIR__ . '/extra_config.xml');
}
} else {
Phar::mount('config.xml', 'phar://' . __FILE__ . '/default_config.xml');
Phar::mount('extra.xml', 'phar://' . __FILE__ . '/default_extra.xml');
}
// ahora se lanza la aplicación
include 'phar://' . __FILE__ . '/index.php';
__HALT_COMPILER();
?>
... y el código externo para cargar este archivo phar:
<?php
define('EXTERNAL_CONFIG', '/home/ejemplo/config.xml');
// ahora se lanza la aplicación
include '/ruta/al/archivo.phar';
?>