Documentación offline PHP master

Phar::setStub

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

Phar::setStub

Utilizado para especificar el cargador PHP o el contenedor de carga de un archivo Phar

Descripción#

public Phar::setStub(resource $stub, [int $length]): true
```php

> [!NOTE]
> Este método requiere que la variable de configuración INI `phar.readonly` esté definida a `0` para funcionar con los objetos `Phar` . De lo contrario, se lanzará una excepción `PharException`.

Este método se utiliza para añadir un cargador PHP a un nuevo archivo Phar, o para reemplazar el contenedor de carga de un archivo Phar existente.

El contenedor de carga de un archivo Phar se utiliza cuando un archivo es incluido directamente como en este ejemplo:
o mediante una simple ejecución:


    php myphar.phar



El cargador no se utiliza cuando un fichero es incluido a través del flujo `phar` como esto:
## Parámetros

`stub`  
Una cadena o un `resource` de flujo abierto a utilizar como contenedor ejecutable para este archivo phar.

`length`  
Longitud de `stub` en bytes.

> [!WARNING]
> Pasar el argumento `length` con un `resource` en el primer argumento está *OBSOLETO* a partir de PHP 8.3.0. Utilizar `$phar->setStub(stream_get_contents($resource))` en su lugar.

## Valores devueltos

Retorna siempre `true`.

## Errores/Excepciones

Una excepción `UnexpectedValueException` es lanzada si [phar.readonly](#ini.phar.readonly) está activado en el php.ini. Una excepción `PharException` es lanzada si se encuentran problemas al escribir los cambios en el disco.

## Historial de cambios

| Versión | Descripción |
|----|----|
| 8.4.0 | El tipo de retorno es ahora `true`, anteriormente era `bool`. |
| 8.3.0 | Llamar a Phar::setStub con una `resource` y una `length` ahora está obsoleto. Tales llamadas deberían ser reemplazadas por: `$phar->setStub(stream_get_contents($resource));` |

## Ejemplos

Un ejemplo con `Phar::setStub`
setStub('

'); include 'phar://nouveau.phar/a.php'; var_dump($p->getStub());

$p['b.php'] = '<?php var_dump("Tout le monde");';
$p->setStub('<?php var_dump("Second"); Phar::mapPhar("nouveau.phar"); __HALT_COMPILER(); ?>');
include 'phar://nouveau.phar/b.php';
var_dump($p->getStub());

} catch (Exception $e) { echo 'Error al escribir nuevo.phar: ', $e; } ?>

```php

El ejemplo anterior mostrará:

string(5) "Salut"
string(79) "<?php var_dump("Premier"); Phar::mapPhar("nouveau.phar"); __HALT_COMPILER(); ?>"
string(13) "Tout le monde"
string(78) "<?php var_dump("Second"); Phar::mapPhar("nouveau.phar"); __HALT_COMPILER(); ?>"

Véase también#

Phar::getStub, Phar::createDefaultStub