PHPEncoder est une bibliothèque PHP permettant d'exporter des variables et de générer des représentations de code PHP pour lesdites variables similaires à la fonction intégrée var_export()
. Cependant, par rapport à la fonction intégrée, cette bibliothèque offre plus d'options pour personnaliser la sortie, ce qui facilite la génération de code pour différents types d'objectifs, tels que des fichiers de configuration lisibles ou des fichiers de cache optimisés.
Le but de cette bibliothèque est de remédier à certaines des lacunes du var_export()
intégré. Par exemple, il n'existe aucun moyen de contrôler la quantité d'espaces dans la sortie et il n'existe aucun moyen de choisir entre différentes notations de tableau. Cette bibliothèque fournit également des fonctionnalités pour convertir des objets en code PHP qui sont réellement utiles par rapport à la fonction intégrée.
Le grand nombre d'options de personnalisation de cette bibliothèque vous permet de créer du code adapté à vos objectifs. Vous pouvez créer du code très compact, lorsque vous devez limiter la taille de la sortie, ou vous pouvez créer du code dans le style qui s'adapte réellement à n'importe lequel de vos fichiers PHP générés dynamiquement.
La documentation de l'API est disponible sur : http://kit.riimu.net/api/phpencoder/
Le moyen le plus simple d'installer cette bibliothèque consiste à utiliser Composer pour gérer vos dépendances. Afin d'installer cette bibliothèque via Composer, suivez simplement ces deux étapes :
Acquérez le composer.phar
en exécutant l’installation en ligne de commande Composer à la racine de votre projet.
Une fois que vous avez exécuté le script d'installation, vous devriez avoir le fichier composer.phar
à la racine de votre projet et vous pouvez exécuter la commande suivante :
php composer.phar require "riimu/kit-phpencoder:^2.3"
Après avoir installé cette bibliothèque via Composer, vous pouvez charger la bibliothèque en incluant le fichier vendor/autoload.php
généré par Composer lors de l'installation.
Si vous savez déjà comment utiliser Composer, vous pouvez également ajouter la bibliothèque en tant que dépendance en ajoutant le fichier composer.json
suivant à votre projet et en exécutant la commande composer install
:
{
"require" : {
"riimu/kit-phpencoder" : " ^2.3 "
}
}
Si vous ne souhaitez pas utiliser Composer pour charger la bibliothèque, vous pouvez également télécharger la bibliothèque manuellement en téléchargeant la dernière version et en extrayant le dossier src
dans votre projet. Vous pouvez ensuite inclure le fichier src/autoload.php
fourni pour charger les classes de la bibliothèque.
La méthode la plus pertinente fournie par cette bibliothèque est la méthode encode()
fournie par PHPEncoder
. La méthode prend n'importe quelle valeur comme argument et renvoie la représentation du code PHP pour cette valeur.
Par exemple:
<?php
require ' vendor/autoload.php ' ;
$ encoder = new Riimu Kit PHPEncoder PHPEncoder ();
echo $ encoder -> encode ([ ' foo ' => ' bar ' , [ 1 , true , false , null , 1.0 ]]);
Cela créerait le résultat suivant :
[
'foo' => 'bar',
[1, true, false, null, 1.0],
]
Bien entendu, la fonctionnalité la plus importante de cette bibliothèque est la possibilité de personnaliser le code PHP créé. Comme deuxième argument, la méthode encode()
prend un tableau d'options, qui peuvent être utilisées pour personnaliser le code PHP renvoyé. Par exemple:
<?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 ,
]);
Cela créerait le résultat suivant :
[
'foo' => 'bar',
0 => [
0 => 1,
1 => TRUE,
2 => FALSE,
3 => NULL,
4 => 1.0,
],
]
Les options d'encodage vous permettent de personnaliser la sortie de la méthode encode()
. Il est possible de paramétrer ces options de trois manières différentes :
PHPEncoder
.setOption()
.encode()
. Notez que les options passées à la méthode encode()
ne sont que temporaires et ne s'appliquent pas aux appels suivants.
espace : <booléen> (vrai)
Lorsqu'il est défini sur false
, la génération de tous les espaces supplémentaires est désactivée et tous les autres paramètres qui affectent les espaces sont ignorés.
hex.capitalize : <booléen> (faux)
Lorsqu'il est défini sur true
tous les caractères hexadécimaux de la sortie sont écrits en majuscules au lieu de minuscules.
null.capitalize : <booléen> (faux)
Lorsqu'elle est définie sur true
, toutes les valeurs null
sont écrites en majuscules au lieu de minuscules.
boolean.capitalize : <boolean> (faux)
Lorsqu'elle est définie sur true
, toutes les valeurs true
et false
sont écrites en majuscules au lieu de minuscules.
integer.type : <"binary"|"octal"|"decimal"|"hexadecimal"> ("décimal")
Modifiez la syntaxe de sortie des entiers. Par exemple, l'utilisation du type "hexadecimal"
afficherait le nombre 15
sous la forme 0xf
.
float.integers : <boolean|"all"> (faux)
Lorsqu'il est défini sur true
, tout flottant qui représente un entier et dont la valeur est représentée avec précision par le nombre à virgule flottante sera codé comme un entier au lieu d'un flottant. (par exemple, la valeur 2.0
sera codée comme 2
). Pour inclure les valeurs qui ne sont pas représentées avec précision, vous pouvez définir l'option sur "all"
.
float.export : <booléen> (faux)
Lorsqu'ils sont définis sur true
les flottants sont codés à l'aide de var_export()
, ce qui provoque une sortie légèrement différente sur les nombres à virgule flottante non entiers par rapport à la méthode standard implémentée. Dans certains cas, cela peut produire des chiffres plus précis mais avec une représentation moins nette.
float.precision : <entier|faux> (17)
La précision maximale des valeurs à virgule flottante codées, ce qui signifie généralement également le nombre maximum de chiffres dans les flottants codés. Si la valeur est définie sur false
, le paramètre PHP ini serialize_precision
sera utilisé à la place. Notez qu'en raison du fonctionnement des valeurs à virgule flottante, une valeur supérieure à 17 n'apporte aucune précision supplémentaire.
string.binary : <booléen> (faux)
Lorsqu'elle est définie sur true
toute chaîne qui n'est pas valide en UTF-8 sera codée en base 64 et enveloppée avec l'appel base64_decode()
.
string.escape : <booléen> (vrai)
Lorsqu'elle est définie sur true
, toutes les chaînes contenant des octets en dehors de la plage ASCII 32-126 seront écrites avec des guillemets doubles et les caractères en dehors de la plage seront échappés.
string.utf8 : <booléen> (faux)
Lorsque cette option et string.escape
sont définis sur true
, tous les caractères UTF-8 multioctets valides dans les chaînes sont codés à l'aide de la syntaxe de point de code unicode PHP7. Notez que cette syntaxe ne fonctionne pas dans les versions PHP antérieures à 7.0.
string.classes : <string[]> ([])
Définit une liste de classes ou de préfixes d'espace de noms de classe pour les classes qui peuvent être codées à l'aide de l'opérateur de résolution de classe ::class
lorsqu'elles sont rencontrées dans des chaînes. par exemple, fournir la valeur ['Riimu\']
encoderait toutes les chaînes qui ressemblent à des noms de classe dans l'espace de noms Riimu
comme RiimuKitPHPEncoder::class
.
string.imports : <string[]> ([])
Liste des importations utilisées dans le fichier de code résultant, qui permet d'écrire les noms de classe dans un format plus court. La liste doit être un tableau associatif avec l'espace de noms ou la classe comme clé et le nom utilisé comme valeur. Utilisez une chaîne vide pour indiquer l'espace de noms actuel.
Par exemple, si le fichier résultant avait namespace RiimuKitPHPEncoder;
et use PHPUnitFrameworkTestCase;
, vous pouvez configurer le tableau comme ['Riimu\Kit\PHPEncoder\' => '', 'PHPUnit\Framework\TestCase' => 'TestCase']
array.short : <booléen> (vrai)
Lorsqu'il est défini sur true
, les tableaux sont entourés de crochets []
au lieu d'utiliser la notation array()
.
array.base : <entier|chaîne> (0)
Indentation de base pour les tableaux sous forme de nombre d'espaces ou de chaîne. Fournit une commodité lorsque vous devez générer du code dans un fichier avec un niveau d’indentation spécifique.
array.indent : <entier|chaîne> (4)
Quantité d'indentation pour un seul niveau d'indentation sous la forme d'un nombre d'espaces ou d'une chaîne.
array.align : <booléen> (faux)
Lorsqu'ils sont définis sur true
, les opérateurs d'affectation de tableau =>
sont alignés sur la même colonne à l'aide d'espaces. Même si elles sont activées, les options array.omit
et array.inline
sont toujours respectées, mais seulement si toutes les clés du tableau spécifique peuvent être omises.
array.inline : <booléen|entier> (70)
Lorsqu'il est défini sur true
, tout tableau pouvant être écrit sans aucune clé de tableau sera écrit sur une seule ligne. Si un entier est fourni à la place, le tableau sera écrit sur une seule ligne uniquement s'il ne dépasse pas ce nombre de caractères. Cette option n'a aucun effet lorsque array.omit
est défini sur false.
array.omit : <booléen> (vrai)
Lorsqu'il est défini sur true
, les clés de tableau redondantes ne seront pas incluses (par exemple, le tableau [0 => 'a', 1 => 'b']
serait codé comme ['a', 'b']
).
array.eol : <string|false> (faux)
Le caractère de fin de ligne utilisé par la sortie du tableau. Lorsqu'il est défini sur false
, le PHP_EOL
par défaut sera utilisé à la place.
object.method : <booléen> (vrai)
Lorsqu'il est défini sur true
, tout objet codé sera vérifié pour les méthodes toPHP()
et toPHPValue()
. Si la méthode toPHP()
existe, la chaîne renvoyée sera utilisée comme représentation en code PHP de l'objet. Si la méthode toPHPValue()
existe à la place, la valeur renvoyée sera codée en PHP et utilisée comme représentation code de l'objet.
objet.format : <string> ('vars')
Format d'encodage d'objet par défaut. Les valeurs possibles sont :
string
convertit l'objet en chaîne, puis code cette chaîne en PHP.serialize
sérialise l'objet et l'enveloppe avec unserialize()
export
imite la représentation de l'objet var_export()
array
convertit l'objet en un tableau et code ce tableauvars
transforme l'objet en tableau en utilisant get_object_vars()
iterate
transforme l'objet en tableau en le parcourant avec foreach
object.cast : <booléen> (vrai)
S'il faut ajouter ou non un cast (object)
devant les tableaux générés à partir d'objets lors de l'utilisation des formats de codage d'objet vars
, array
ou iterate
.
recursion.detect : <booléen> (vrai)
Lorsqu'il est défini sur true
, l'encodeur tentera de détecter les références circulaires dans les tableaux et les objets pour éviter les boucles infinies.
recursion.ignore : <booléen> (faux)
Lorsqu'elle est définie sur true
, toute référence circulaire sera remplacée par null
au lieu de lever une exception.
recursion.max : <entier|faux> (faux)
Nombre maximum de niveaux lors de l'encodage de tableaux et d'objets. Une exception est levée lorsque le maximum est dépassé. Définissez sur false
pour n’avoir aucune limite.
Cette bibliothèque est protégée par Copyright (c) 2013-2022 Riikka Kalliomäki.
Voir LICENCE pour les informations sur la licence et la copie.