PHPEncoder ist eine PHP-Bibliothek zum Exportieren von Variablen und zum Generieren von PHP-Codedarstellungen für diese Variablen, ähnlich der integrierten Funktion var_export()
. Im Vergleich zur integrierten Funktion bietet diese Bibliothek jedoch mehr Optionen zum Anpassen der Ausgabe, wodurch es einfacher wird, Code für verschiedene Zwecke zu generieren, z. B. lesbare Konfigurationsdateien oder optimierte Cache-Dateien.
Der Zweck dieser Bibliothek besteht darin, einige der Mängel der integrierten var_export()
zu beheben. Beispielsweise gibt es keine Möglichkeit, die Menge an Leerzeichen in der Ausgabe zu steuern, und es gibt keine Möglichkeit, zwischen verschiedenen Array-Notationen zu wählen. Diese Bibliothek bietet auch Funktionen zum Konvertieren von Objekten in PHP-Code, die im Vergleich zur integrierten Funktion tatsächlich nützlich sind.
Die große Anzahl an Anpassungsoptionen in dieser Bibliothek ermöglicht es Ihnen, Code zu erstellen, der Ihren Zwecken entspricht. Sie können sehr kompakten Code erstellen, wenn Sie die Größe der Ausgabe begrenzen müssen, oder Sie können Code in dem Stil erstellen, der tatsächlich in jede Ihrer dynamisch generierten PHP-Dateien passt.
Die API-Dokumentation ist verfügbar unter: http://kit.riimu.net/api/phpencoder/
Der einfachste Weg, diese Bibliothek zu installieren, besteht darin, Composer zum Verwalten Ihrer Abhängigkeiten zu verwenden. Um diese Bibliothek über Composer zu installieren, befolgen Sie einfach diese beiden Schritte:
Erwerben Sie die composer.phar
, indem Sie die Composer-Befehlszeileninstallation in Ihrem Projektstammverzeichnis ausführen.
Sobald Sie das Installationsskript ausgeführt haben, sollte sich die Datei composer.phar
in Ihrem Projektstammverzeichnis befinden und Sie können den folgenden Befehl ausführen:
php composer.phar require "riimu/kit-phpencoder:^2.3"
Nachdem Sie diese Bibliothek über Composer installiert haben, können Sie die Bibliothek laden, indem Sie die Datei vendor/autoload.php
einbinden, die von Composer während der Installation generiert wurde.
Wenn Sie bereits mit der Verwendung von Composer vertraut sind, können Sie die Bibliothek alternativ als Abhängigkeit hinzufügen, indem Sie die folgende Datei composer.json
zu Ihrem Projekt hinzufügen und den composer install
Installationsbefehl ausführen:
{
"require" : {
"riimu/kit-phpencoder" : " ^2.3 "
}
}
Wenn Sie Composer nicht zum Laden der Bibliothek verwenden möchten, können Sie die Bibliothek auch manuell herunterladen, indem Sie die neueste Version herunterladen und den Ordner src
in Ihr Projekt extrahieren. Anschließend können Sie die bereitgestellte Datei src/autoload.php
einschließen, um die Bibliotheksklassen zu laden.
Die relevanteste von dieser Bibliothek bereitgestellte Methode ist die von PHPEncoder
bereitgestellte Methode encode()
. Die Methode akzeptiert einen beliebigen Wert als Argument und gibt die PHP-Codedarstellung für diesen Wert zurück.
Zum Beispiel:
<?php
require ' vendor/autoload.php ' ;
$ encoder = new Riimu Kit PHPEncoder PHPEncoder ();
echo $ encoder -> encode ([ ' foo ' => ' bar ' , [ 1 , true , false , null , 1.0 ]]);
Dies würde die folgende Ausgabe erzeugen:
[
'foo' => 'bar',
[1, true, false, null, 1.0],
]
Das wichtigste Merkmal dieser Bibliothek ist natürlich die Möglichkeit, den erstellten PHP-Code anzupassen. Als zweites Argument erwartet die Methode encode()
ein Array von Optionen, mit denen der zurückgegebene PHP-Code angepasst werden kann. Zum Beispiel:
<?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 ,
]);
Dies würde die folgende Ausgabe erzeugen:
[
'foo' => 'bar',
0 => [
0 => 1,
1 => TRUE,
2 => FALSE,
3 => NULL,
4 => 1.0,
],
]
Mit Kodierungsoptionen können Sie die Ausgabe der Methode encode()
anpassen. Diese Optionen können auf drei verschiedene Arten eingestellt werden:
PHPEncoder
Konstruktor als Array bereitgestellt werden.setOption()
festgelegt werden.encode()
übergeben werden. Beachten Sie, dass an die Methode encode()
übergebene Optionen nur temporär sind und nicht auf folgende Aufrufe angewendet werden.
Leerzeichen : <boolean> (wahr)
Bei Festlegung auf false
wird die Generierung aller zusätzlichen Leerzeichen deaktiviert und alle anderen Einstellungen, die sich auf Leerzeichen auswirken, werden ignoriert.
hex.capitalize : <boolean> (false)
Bei der Einstellung true
werden alle hexadezimalen Zeichen in der Ausgabe in Großbuchstaben statt in Kleinbuchstaben geschrieben.
null.capitalize : <boolean> (false)
Bei Festlegung auf true
werden alle null
in Großbuchstaben statt in Kleinbuchstaben geschrieben.
boolean.capitalize : <boolean> (false)
Bei der Einstellung true
werden alle true
und false
Werte in Großbuchstaben statt in Kleinbuchstaben geschrieben.
integer.type : <"binary"|"octal"|"decimal"|"hexadecimal"> ("decimal")
Ändern Sie die Ausgabesyntax von Ganzzahlen. Wenn Sie beispielsweise den Typ "hexadecimal"
verwenden, wird die Zahl 15
als 0xf
ausgegeben.
float.integers : <boolean|"all"> (false)
Bei Festlegung auf true
wird jede Gleitkommazahl, die eine Ganzzahl darstellt und einen Wert hat, der genau durch die Gleitkommazahl dargestellt wird, als Ganzzahl statt als Gleitkommazahl codiert. (z. B. wird der Wert 2.0
als 2
kodiert). Um die Werte einzubeziehen, die nicht genau dargestellt werden, können Sie die Option auf "all"
setzen.
float.export : <boolean> (false)
Bei der Einstellung true
werden Gleitkommazahlen mit var_export()
codiert, was zu einer etwas anderen Ausgabe bei nicht ganzzahligen Gleitkommazahlen im Vergleich zur standardmäßig implementierten Methode führt. In einigen Fällen kann dies zu genaueren Zahlen führen, jedoch mit einer weniger sauberen Darstellung.
float.precision : <integer|false> (17)
Die maximale Genauigkeit codierter Gleitkommawerte, was normalerweise auch die maximale Anzahl von Ziffern in codierten Gleitkommawerten bedeutet. Wenn der Wert auf false
gesetzt ist, wird stattdessen die PHP-INI-Einstellung serialize_precision
verwendet. Beachten Sie, dass aufgrund der Funktionsweise von Gleitkommawerten ein Wert über 17 keine zusätzliche Genauigkeit bietet.
string.binary : <boolean> (false)
Bei der Einstellung „ true
wird jede Zeichenfolge, die kein gültiges UTF-8 ist, in Base 64 codiert und mit dem Aufruf base64_decode()
umschlossen.
string.escape : <boolean> (wahr)
Bei der Einstellung true
werden alle Zeichenfolgen, die Bytes außerhalb des ASCII-Bereichs 32–126 enthalten, in doppelte Anführungszeichen geschrieben und die Zeichen außerhalb des Bereichs werden mit Escapezeichen versehen.
string.utf8 : <boolean> (falsch)
Wenn sowohl diese Option als auch string.escape
auf true
gesetzt sind, werden alle gültigen Multibyte-UTF-8-Zeichen in Strings mit der PHP7-Unicode-Codepunktsyntax codiert. Beachten Sie, dass diese Syntax in PHP-Versionen vor 7.0 nicht funktioniert.
string.classes : <string[]> ([])
Definiert eine Liste von Klassen oder Klassen-Namespace-Präfixen für Klassen, die mit dem Klassenauflösungsoperator ::class
codiert werden können, wenn sie in Zeichenfolgen vorkommen. Wenn Sie beispielsweise den Wert ['Riimu\']
angeben, werden alle Zeichenfolgen codiert, die wie Klassennamen im Riimu
-Namespace aussehen, z. B. RiimuKitPHPEncoder::class
.
string.imports : <string[]> ([])
Liste der in der resultierenden Codedatei verwendeten Importe, wodurch Klassennamen in einem kürzeren Format geschrieben werden können. Die Liste sollte ein assoziatives Array mit dem Namespace oder der Klasse als Schlüssel und dem verwendeten Namen als Wert sein. Verwenden Sie eine leere Zeichenfolge, um den aktuellen Namespace anzugeben.
Wenn die resultierende Datei beispielsweise namespace RiimuKitPHPEncoder;
und use PHPUnitFrameworkTestCase;
, Sie könnten das Array als ['Riimu\Kit\PHPEncoder\' => '', 'PHPUnit\Framework\TestCase' => 'TestCase']
einrichten.
array.short : <boolean> (wahr)
Wenn auf true
gesetzt, werden Arrays in eckige Klammern []
eingeschlossen, anstatt die lange Array-Schreibweise array()
zu verwenden.
array.base : <integer|string> (0)
Basiseinzug für Arrays als Anzahl von Leerzeichen oder als String. Bietet Komfort, wenn Sie Code mit einer bestimmten Einrückungsebene in eine Datei ausgeben müssen.
array.indent : <integer|string> (4)
Einrückungsgrad für eine einzelne Einrückungsebene als Anzahl von Leerzeichen oder als Zeichenfolge.
array.align : <boolean> (false)
Bei Festlegung auf true
werden Array-Zuweisungsoperatoren =>
mithilfe von Leerzeichen an derselben Spalte ausgerichtet. Auch wenn sie aktiviert sind, werden die Optionen array.omit
und array.inline
weiterhin berücksichtigt, jedoch nur, wenn alle Schlüssel im spezifischen Array weggelassen werden können.
array.inline : <boolean|integer> (70)
Bei der Einstellung true
wird jedes Array, das ohne Array-Schlüssel geschrieben werden kann, in einer einzelnen Zeile geschrieben. Wenn stattdessen eine Ganzzahl angegeben wird, wird das Array nur dann als einzelne Zeile geschrieben, wenn die Anzahl der Zeichen nicht überschritten wird. Diese Option hat keine Auswirkung, wenn array.omit
auf false gesetzt ist.
array.omit : <boolean> (wahr)
Wenn auf true
gesetzt, werden alle redundanten Array-Schlüssel nicht einbezogen (z. B. würde das Array [0 => 'a', 1 => 'b']
genauso codiert werden wie ['a', 'b']
).
array.eol : <string|false> (false)
Das von der Array-Ausgabe verwendete Zeilenendezeichen. Wenn es auf false
gesetzt ist, wird stattdessen das Standard PHP_EOL
verwendet.
object.method : <boolean> (wahr)
Wenn es auf true
gesetzt ist, wird jedes codierte Objekt auf die Methoden toPHP()
und toPHPValue()
überprüft. Wenn die Methode toPHP()
vorhanden ist, wird der zurückgegebene String als PHP-Codedarstellung des Objekts verwendet. Wenn stattdessen die Methode toPHPValue()
existiert, wird der zurückgegebene Wert als PHP codiert und als Codedarstellung des Objekts verwendet.
object.format : <string> ('vars')
Standardformat für Objektkodierung. Die möglichen Werte sind:
string
wandelt das Objekt in einen String um und codiert diesen String dann als PHP.serialize
serialisiert das Objekt und umschließt es mit unserialize()
export
ahmt die Objektdarstellung var_export()
nacharray
wandelt das Objekt in ein Array um und codiert dieses Arrayvars
verwandelt ein Objekt mit get_object_vars()
in ein Arrayiterate
verwandelt das Objekt in ein Array, indem es mit foreach
iteriert wird object.cast : <boolean> (wahr)
Ob eine (object)
Umwandlung vor aus Objekten generierten Arrays hinzugefügt werden soll oder nicht, wenn die Objektkodierungsformate vars
, array
oder iterate
verwendet werden.
recursion.detect : <boolean> (wahr)
Bei Einstellung auf true
versucht der Encoder, Zirkelverweise in Arrays und Objekten zu erkennen, um Endlosschleifen zu vermeiden.
recursion.ignore : <boolean> (falsch)
Bei Festlegung auf true
wird jeder Zirkelverweis durch null
ersetzt, anstatt eine Ausnahme auszulösen.
recursion.max : <integer|false> (false)
Maximale Anzahl von Ebenen beim Codieren von Arrays und Objekten. Eine Ausnahme wird ausgelöst, wenn das Maximum überschritten wird. Auf false
setzen, um keine Begrenzung zu haben.
Diese Bibliothek unterliegt dem Copyright (c) 2013-2022 von Riikka Kalliomäki.
Lizenz- und Kopierinformationen finden Sie unter LIZENZ.