(PHP 5 >= 5.3.0, PHP 7, PECL phar >= 2.0.0)
Phar::mount — Montar un fichero o ruta externos en una ubicación virtual dentro de un archivo phar
$pharpath
, string $externalpath
) : voidAl igual que con el concepto del sistema de ficheros de Unix de montar dispositivos externos en rutas dentro del árbol de directorios, Phar::mount() siempre se refiere a ficheros y directorios externos como si estuvieran dentro de un archivo phar. Esto perimte una potente abstracción tal como referirse a ficheros de configuración externos como si estuvieran dentro del archivo.
pharpath
La ruta interna a usar dentro del archivo phar como la ubicación de la ruta montada. Debe ser una ruta relativa dentro del archivo phar, y no debe existir.
externalpath
Una ruta o un URL a un fichero o directorio externo a montar dentro del archivo phar.
No devuelve nada. Lanza una excepción de tipo PharException en caso de fallo.
Lanza una excepción de tipo PharException si ocurrió algún problema al montar la ruta.
Ejemplo #1 Un ejemplo de Phar::mount()
El siguiente ejemplo muestra el acceso a un fichero de configuración externo como si fuera una ruta dentro de un archivo phar.
Lo primero, el código dentro de un archivo phar:
<?php
$configuración = simplexml_load_string(file_get_contents(
Phar::running(false) . '/config.xml'));
?>
Lo siguiente, el código externo utilizado para montar el fichero de configuración:
<?php
// primero se establece la asociación entre el config.xml abstracto
// y el real del disco
Phar::mount('phar://config.xml', '/home/example/config.xml');
// ahora ejecutar la aplicación
include '/ruta/a/archivo.phar';
?>
Otro método es poner el codigo de montaje dentro de la rutina de interoperabilidad del archivo phar. Aquí está un ejemplo de establecer un fichero de configuración predeterminado si no se especifica una configuración de usuario:
<?php
// primero se establece la asociación entre el config.xml abstracto
// y el real del 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 ejecutar la aplicación
include 'phar://' . __FILE__ . '/index.php';
__HALT_COMPILER();
?>
...y el código externo para cargar este archivo phar:
<?php
define('EXTERNAL_CONFIG', '/inicio/ejemplo/config.xml');
// ahora ejecutar la aplicación
include '/ruta/a/archivo.phar';
?>