Phar::mount

(PHP 5 >= 5.3.0, PHP 7, PECL phar >= 2.0.0)

Phar::mountMontar un fichero o ruta externos en una ubicación virtual dentro de un archivo phar

Descripción

final public static Phar::mount ( string $pharpath , string $externalpath ) : void

Al 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.

Parámetros

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.

Valores devueltos

No devuelve nada. Lanza una excepción de tipo PharException en caso de fallo.

Errores/Excepciones

Lanza una excepción de tipo PharException si ocurrió algún problema al montar la ruta.

Ejemplos

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';
?>