# Phar::webPhar

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

Phar::webPhar — mapPhar para archivos phar basados en web. Controlador principal para aplicaciones web

### Descripción

final public static Phar::webPhar(
string `$alias` = ?,
string `$index` = "index.php",
string `$f404` = ?,
array `$mimetypes` = ?,
callable `$rewrites` = ?
): void

Phar::mapPhar() para archivos phar basados en web. Este método procesa $_SERVER['REQUEST_URI'] y direcciona una petición de un navegador web a un fichero interno dentro de un archivo phar. En esencia, simula un servidor web, direccionando las peticiones al fichero correcto, enviando las cabeceras correctas y procesando ficheros PHP según sea necesario. Este poderoso método es parte de lo que hace sencillo convertir una apliación PHP existene en un archivo phar. Combinado con Phar::mungServer() y Phar::interceptFileFuncs(), cualquier aplicación web se puede utilizar sin modificaciones desde un archivo phar.

Phar::webPhar() debería llamarse solamente desde la rutina de interoperabilidad (stub) de un archivo phar (aquí hay más información de lo que es una rutina de interorperabilidad).

### Parámetros

`alias`

  El alias que puede usarse en las URL `phar://` para referirse a este archivo, en vez de su ruta completa.

`index`

  La ubicación dentro del phar del índice de directorios.

`f404`

  La ubicación del script a ejecutar cuando no se encuentra el fichero. Este script debería mostrar las cabeceras HTTP 404 apropiadas.

`mimetypes`

  Un array que mapea extensiones de fichero adicionales a tipos de MIME. Si el mapeo predeterminado es suficiente, se ha de pasar un array vacío. Por omisión, estas extensiones son mapeadas a estos tipos de MIME:

  `<?php
  $mimes = array(
  'phps' => Phar::PHPS, // pasa a highlight_file()
  'c' => 'text/plain',
  'cc' => 'text/plain',
  'cpp' => 'text/plain',
  'c++' => 'text/plain',
  'dtd' => 'text/plain',
  'h' => 'text/plain',
  'log' => 'text/plain',
  'rng' => 'text/plain',
  'txt' => 'text/plain',
  'xsd' => 'text/plain',
  'php' => Phar::PHP, // procesado como PHP
  'inc' => Phar::PHP, // procesado como PHP
  'avi' => 'video/avi',
  'bmp' => 'image/bmp',
  'css' => 'text/css',
  'gif' => 'image/gif',
  'htm' => 'text/html',
  'html' => 'text/html',
  'htmls' => 'text/html',
  'ico' => 'image/x-ico',
  'jpe' => 'image/jpeg',
  'jpg' => 'image/jpeg',
  'jpeg' => 'image/jpeg',
  'js' => 'application/x-javascript',
  'midi' => 'audio/midi',
  'mid' => 'audio/midi',
  'mod' => 'audio/mod',
  'mov' => 'movie/quicktime',
  'mp3' => 'audio/mp3',
  'mpg' => 'video/mpeg',
  'mpeg' => 'video/mpeg',
  'pdf' => 'application/pdf',
  'png' => 'image/png',
  'swf' => 'application/shockwave-flash',
  'tif' => 'image/tiff',
  'tiff' => 'image/tiff',
  'wav' => 'audio/wav',
  'xbm' => 'image/xbm',
  'xml' => 'text/xml',
  );
  ?>`
`rewrites`

  A la función rewrites se le proporciona un string como único parámetro y debe devolver un string o `false`.

  Si se está utilizando fast-cgi o cgi, el parámetro pasado a la función es el valor de la variable $_SERVER['PATH_INFO']. De otro modo, el parámetro pasado a la función es el valor de la variable $_SERVER['REQUEST_URI'].

  Si se devuelve un string, este se usa como la ruta de fichero interno. Si se devuelve `false`, webPhar() enviará un código de rechazo HTTP 403.

### Valores devueltos

No devuelve ningún valor.

### Errores/Excepciones

Lanza una excepción de tipo PharException cuando no se puede abrir el fichero interno para salida, o si se llama desde un lugar que no sea una rutina de interoperabilidad. Si se pasa un array no válido a `mimetypes` o se proporciona una llamada de retorno no válida a `rewrites`, se lanza una excepción de tipo UnexpectedValueException.

### Ejemplos

Ejemplo #1 Un ejemplo de Phar::webPhar()

Con el ejemplo siguiente, el phar creado mostrará `Hola Mundo` si uno explora `/miphar.phar/index.php` o `/miphar.phar`, y mostrará la fuente de `index.phps` si uno explora `/miphar.phar/index.phps`.

`<?php
// creating the phar archive:
try {
$phar = new Phar('miphar.phar');
$phar['index.php'] = '<?php echo "Hola Mundo"; ?>';
$phar['index.phps'] = '<?php echo "Hola Mundo"; ?>';
$phar->setStub('<?php
Phar::webPhar();
__HALT_COMPILER(); ?>');
} catch (Exception $e) {
// manejar errores
}
?>`

### Ver también

- Phar::mungServer() - Definir una lista de hasta 4 variables $_SERVER que debería ser modificadas para la ejecución
- Phar::interceptFileFuncs() - Ordenar a phar interceptar fopen, file_get_contents, opendir, y todas las funciones relacionadas con estadísticas