PHP Conference Japan 2024

Phar::convertToExecutable

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

Phar::convertToExecutableConvertir un archivo phar en otro formato de archivo phar ejecutable

Descripción

public Phar::convertToExecutable(int $format = 9021976, int $compression = 9021976, string $extension = ?): Phar

Nota:

Este método requiere que la opción de php.ini phar.readonly esté establecida a 0 para que trabaje con objetos Phar. De otra manera, se lanzará una excepción de tipo PharException.

Este método se utiliza para convertir un archivo phar en otro formato de fichero. Por ejemplo, se puede utilizar para crear un archivo phar ejecutable basado en tar desde un archivo phar ejecutable basado en zip, o desde un archivo phar ejecutable en el formato de fichero phar. Además, se puede utilizar para aplicar la compresión al archivo completo a un archivo basado en phar o tar.

Si no se especifica ningún cambio, este método lanza una excepción de tipo BadMethodCallException

En caso de éxito, el metodo crea un nuevo archivo en disco y devuelve un objeto de la clase PharData. El archivo antiguo no se elimina del disco, y debería hacerse manualmente después de que el proceso haya finalizado.

Parámetros

format

Este parámetro debería ser Phar::PHAR, Phar::TAR, o Phar::ZIP. Si se establece a null, se conservará el formato de fichero existente.

compression

Este parámetro debería ser Phar::NONE para no comprimir el archivo completo, Phar::GZ para la compresión basada en zlib, y Phar::BZ2 para la compresión basada en bzip.

extension

Este parámetro se utiliza para sobrescribir la extensión de fichero predeterminada de un archivo convertido. Observe que todos los archivos phar basados en zip o en tar deben contener .phar en su extensión de fichero para poder ser procesados como un archivo phar.

Si se convierte a un archivo basado en phar, las extensiones predeterminadas son .phar, .phar.gz, o .phar.bz2 dependiendo de la compresión especificada. Para archivos phar basados en tar, las extensiones predeterminadas son .phar.tar, .phar.tar.gz, y .phar.tar.bz2. Para archivos phar basados en zip, la estensión predeterminada es .phar.zip.

Valores devueltos

El método devuelve un objeto Phar en caso de éxito, y lanza una excepción en caso de error.

Errores/Excepciones

Este método lanza una excepción de tipo BadMethodCallException cuando no se puede comprimir, se ha especificado un método de compresión desconocido, el archivo solicitado está almacenado en buffer con Phar::startBuffering() y no se ha cerrado con Phar::stopBuffering(), una excepción de tipo UnexpectedValueException si el soporte para escritura está deshabilitado, y una excepción de tipo PharException si se encontró algún problema durante el proceso de la creación de phar.

Ejemplos

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

Utilizar Phar::convertToExecutable():

<?php
try {
$tarphar = new Phar('miphar.phar.tar');
// convertirlo al formato de fichero phar
// observe que miphar.phar.tar *no* está desvinculado
$phar = $tarphar->convertToExecutable(Phar::PHAR); // crea miphar.phar
$phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
// crea miphar.phar.tgz
$comprimido = $phar->convertToExecutable(Phar::TAR, Phar::GZ, '.phar.tgz');
} catch (
Exception $e) {
// manejar el error aquí
}
?>

Ver también

add a note

User Contributed Notes 1 note

up
0
alex at phpguide dot co dot il
13 years ago
Convert to executable and compress methods override any stub you have created with their own stub which is responsible for extracting/executing self's content.

calling setStub() after convertingToExecutable doesn't help either. As far of php 5.3.6 (phar 2.0.1 ) if you want to have a phar archive accessible threw the web, you'll have to create your own
index.php which will include a nonexecutable phar and act as the bootstrap.
To Top