PHPEncoder es una biblioteca PHP para exportar variables y generar representaciones de código PHP para dichas variables similar a la función integrada var_export()
. Sin embargo, en comparación con la función integrada, esta biblioteca proporciona más opciones para personalizar la salida, lo que facilita la generación de código para diferentes tipos de propósitos, como archivos de configuración legibles o archivos de caché optimizados.
El propósito de esta biblioteca es abordar algunas de las deficiencias del var_export()
integrado. Por ejemplo, no hay forma de controlar la cantidad de espacios en blanco en la salida y no hay forma de elegir entre diferentes notaciones de matriz. Esta biblioteca también proporciona funcionalidad para convertir objetos en código PHP que es realmente útil en comparación con la función integrada.
La gran cantidad de opciones de personalización de esta biblioteca le permite crear código que se ajuste a sus propósitos. Puede crear código muy compacto, cuando necesite limitar el tamaño de la salida, o puede crear código en el estilo que realmente se ajuste a cualquiera de sus archivos PHP generados dinámicamente.
La documentación de la API está disponible en: http://kit.riimu.net/api/phpencoder/
La forma más sencilla de instalar esta biblioteca es utilizar Composer para manejar sus dependencias. Para instalar esta biblioteca a través de Composer, simplemente siga estos dos pasos:
Adquiera composer.phar
ejecutando la instalación de la línea de comandos de Composer en la raíz de su proyecto.
Una vez que haya ejecutado el script de instalación, debería tener el archivo composer.phar
en la raíz de su proyecto y podrá ejecutar el siguiente comando:
php composer.phar require "riimu/kit-phpencoder:^2.3"
Después de instalar esta biblioteca a través de Composer, puede cargar la biblioteca incluyendo el archivo vendor/autoload.php
que generó Composer durante la instalación.
Si ya está familiarizado con el uso de Composer, también puede agregar la biblioteca como una dependencia agregando el siguiente archivo composer.json
a su proyecto y ejecutando el comando composer install
:
{
"require" : {
"riimu/kit-phpencoder" : " ^2.3 "
}
}
Si no desea utilizar Composer para cargar la biblioteca, también puede descargar la biblioteca manualmente descargando la última versión y extrayendo la carpeta src
a su proyecto. Luego puede incluir el archivo src/autoload.php
proporcionado para cargar las clases de la biblioteca.
El método más relevante proporcionado por esta biblioteca es el método encode()
proporcionado por PHPEncoder
. El método toma cualquier valor como argumento y devuelve la representación del código PHP para ese valor.
Por ejemplo:
<?php
require ' vendor/autoload.php ' ;
$ encoder = new Riimu Kit PHPEncoder PHPEncoder ();
echo $ encoder -> encode ([ ' foo ' => ' bar ' , [ 1 , true , false , null , 1.0 ]]);
Esto crearía el siguiente resultado:
[
'foo' => 'bar',
[1, true, false, null, 1.0],
]
Por supuesto, la característica más importante de esta biblioteca es la capacidad de personalizar el código PHP creado. Como segundo argumento, el método encode()
toma una serie de opciones, que pueden usarse para personalizar el código PHP devuelto. Por ejemplo:
<?php
require ' vendor/autoload.php ' ;
$ encoder = new Riimu Kit PHPEncoder PHPEncoder ();
echo $ encoder -> encode ([ ' foo ' => ' bar ' , [ 1 , true , false , null , 1.0 ]], [
' array.inline ' => false ,
' array.omit ' => false ,
' array.indent ' => 2 ,
' boolean.capitalize ' => true ,
' null.capitalize ' => true ,
]);
Esto crearía el siguiente resultado:
[
'foo' => 'bar',
0 => [
0 => 1,
1 => TRUE,
2 => FALSE,
3 => NULL,
4 => 1.0,
],
]
Las opciones de codificación le permiten personalizar la salida del método encode()
. Es posible configurar estas opciones de tres maneras diferentes:
PHPEncoder
.setOption()
.encode()
. Tenga en cuenta que las opciones pasadas al método encode()
son solo temporales y no se aplican a las siguientes llamadas.
espacio en blanco : <booleano> (verdadero)
Cuando se establece en false
, se deshabilita la generación de todos los espacios en blanco adicionales y se ignoran todas las demás configuraciones que afectan los espacios en blanco.
hex.capitalize : <booleano> (falso)
Cuando se establece en true
todos los caracteres hexadecimales en la salida se escriben en mayúsculas en lugar de minúsculas.
null.capitalize : <booleano> (falso)
Cuando se establece en true
, todos los valores null
se escriben en mayúsculas en lugar de minúsculas.
boolean.capitalize : <booleano> (falso)
Cuando se establece en true
, todos los valores true
y false
se escriben en mayúsculas en lugar de minúsculas.
entero.tipo : <"binario"|"octal"|"decimal"|"hexadecimal"> ("decimal")
Cambie la sintaxis de salida de números enteros. Por ejemplo, usar el tipo "hexadecimal"
generaría el número 15
como 0xf
.
float.integers : <booleano|"todos"> (falso)
Cuando se establece en true
, cualquier flotante que represente un número entero y tenga un valor representado con precisión por el número de coma flotante se codificará como un número entero en lugar de un flotante. (por ejemplo, el valor 2.0
se codificará como 2
). Para incluir los valores que no están representados con precisión, puede configurar la opción en "all"
.
float.export : <booleano> (falso)
Cuando se establece en true
los flotantes se codifican usando var_export()
, lo que provoca una salida ligeramente diferente en números de punto flotante no enteros en comparación con el método implementado estándar. En algunos casos, esto puede producir números más precisos pero con una representación menos clara.
float.precision : <entero|falso> (17)
La precisión máxima de los valores de punto flotante codificados, que normalmente también significa el número máximo de dígitos en puntos flotantes codificados. Si el valor se establece en false
, en su lugar se utilizará la configuración ini de PHP serialize_precision
. Tenga en cuenta que debido a la forma en que funcionan los valores de coma flotante, un valor mayor que 17 no proporciona ninguna precisión adicional.
string.binary : <booleano> (falso)
Cuando se establece en true
cualquier cadena que no sea UTF-8 válida se codificará en base 64 y se empaquetará con la llamada base64_decode()
.
string.escape : <booleano> (verdadero)
Cuando se establece en true
, todas las cadenas que contengan bytes fuera del rango ASCII de 32 a 126 se escribirán entre comillas dobles y los caracteres fuera del rango se utilizarán como formato de escape.
string.utf8 : <booleano> (falso)
Cuando esta opción y string.escape
se establecen en true
, todos los caracteres UTF-8 multibyte válidos en cadenas se codifican utilizando la sintaxis de punto de código Unicode de PHP7. Tenga en cuenta que esta sintaxis no funciona en versiones de PHP anteriores a la 7.0.
cadena.clases : <cadena[]> ([])
Define una lista de clases o prefijos de espacios de nombres de clases para clases que se pueden codificar utilizando el operador de resolución de clases ::class
cuando se encuentran en cadenas. por ejemplo, proporcionar el valor ['Riimu\']
codificaría todas las cadenas que parecen nombres de clases en el espacio de nombres Riimu
como RiimuKitPHPEncoder::class
.
cadena.importaciones : <cadena[]> ([])
Lista de importaciones utilizadas en el archivo de código resultante, que permite escribir los nombres de las clases en un formato más corto. La lista debe ser una matriz asociativa con el espacio de nombres o la clase como clave y el nombre utilizado como valor. Utilice una cadena vacía para indicar el espacio de nombres actual.
Por ejemplo, si el archivo resultante tuviera namespace RiimuKitPHPEncoder;
y use PHPUnitFrameworkTestCase;
, puede configurar la matriz como ['Riimu\Kit\PHPEncoder\' => '', 'PHPUnit\Framework\TestCase' => 'TestCase']
array.short : <booleano> (verdadero)
Cuando se establece en true
, las matrices se incluyen entre corchetes []
en lugar de utilizar la notación de matriz larga array array()
.
matriz.base : <entero|cadena> (0)
Sangría base para matrices como una cantidad de espacios o como una cadena. Proporciona comodidad cuando necesita generar código en un archivo con un nivel específico de sangría.
matriz.indent : <entero|cadena> (4)
Cantidad de sangría para un solo nivel de sangría como una cantidad de espacios o una cadena.
array.align : <booleano> (falso)
Cuando se establece en true
, los operadores de asignación de matriz =>
se alinean con la misma columna usando espacios. Incluso si están habilitadas, las opciones array.omit
y array.inline
aún se respetan, pero solo si se pueden omitir todas las claves de la matriz específica.
array.inline : <booleano|entero> (70)
Cuando se establece en true
, cualquier matriz que se pueda escribir sin claves de matriz se escribirá en una sola línea. Si en su lugar se proporciona un número entero, la matriz se escribirá como una sola línea solo si no excede esa cantidad de caracteres. Esta opción no tiene ningún efecto cuando array.omit
se establece en falso.
array.omit : <booleano> (verdadero)
Cuando se establece en true
, no se incluirá ninguna clave de matriz redundante (por ejemplo, la matriz [0 => 'a', 1 => 'b']
se codificaría como ['a', 'b']
).
array.eol : <cadena|falso> (falso)
El carácter de fin de línea utilizado por la salida de la matriz. Cuando se establece en false
, se utilizará el PHP_EOL
predeterminado en su lugar.
objeto.método : <booleano> (verdadero)
Cuando se establece en true
, se verificará cualquier objeto codificado en busca de métodos toPHP()
y toPHPValue()
. Si el método toPHP()
existe, la cadena devuelta se utilizará como la representación en código PHP del objeto. Si en su lugar existe el método toPHPValue()
, el valor devuelto se codificará como PHP y se utilizará como representación de código del objeto.
objeto.formato : <cadena> ('vars')
Formato de codificación de objetos predeterminado. Los valores posibles son:
string
convierte el objeto en una cadena y luego codifica esa cadena como PHP.serialize
serializa el objeto y lo envuelve con unserialize()
export
imita la representación del objeto var_export()
array
convierte el objeto en una matriz y codifica esa matrizvars
convierte el objeto en una matriz usando get_object_vars()
iterate
convierte el objeto en una matriz iterando sobre él con foreach
object.cast : <booleano> (verdadero)
Si se debe agregar una conversión (object)
delante de las matrices generadas a partir de objetos o no cuando se utilizan los formatos de codificación de objetos vars
, array
o iterate
.
recursion.detect : <booleano> (verdadero)
Cuando se establece en true
, el codificador intentará detectar referencias circulares en matrices y objetos para evitar bucles infinitos.
recursion.ignore : <booleano> (falso)
Cuando se establece en true
, cualquier referencia circular se reemplazará con null
en lugar de generar una excepción.
recursion.max : <entero|falso> (falso)
Número máximo de niveles al codificar matrices y objetos. Se lanza una excepción cuando se excede el máximo. Establezca en false
para no tener límite.
Esta biblioteca tiene Copyright (c) 2013-2022 Riikka Kalliomäki.
Consulte LICENCIA para obtener información sobre licencias y copias.