PHPEncoder adalah perpustakaan PHP untuk mengekspor variabel dan menghasilkan representasi kode PHP untuk variabel tersebut mirip dengan fungsi bawaan var_export()
. Namun, dibandingkan dengan fungsi bawaannya, pustaka ini menyediakan lebih banyak opsi untuk menyesuaikan keluaran, yang membuatnya lebih mudah untuk menghasilkan kode untuk berbagai jenis tujuan seperti file konfigurasi yang dapat dibaca atau file cache yang dioptimalkan.
Tujuan dari perpustakaan ini adalah untuk mengatasi beberapa kekurangan pada var_export()
bawaan. Misalnya, tidak ada cara untuk mengontrol jumlah spasi pada output dan tidak ada cara untuk memilih di antara notasi array yang berbeda. Library ini juga menyediakan fungsionalitas untuk mengubah objek menjadi kode PHP yang sebenarnya berguna jika dibandingkan dengan fungsi bawaannya.
Banyaknya pilihan penyesuaian di perpustakaan ini memungkinkan Anda membuat kode yang sesuai dengan tujuan Anda. Anda dapat membuat kode yang sangat ringkas, ketika Anda perlu membatasi ukuran output, atau Anda dapat membuat kode dengan gaya yang sesuai dengan file PHP apa pun yang Anda buat secara dinamis.
Dokumentasi API tersedia di: http://kit.riimu.net/api/phpencoder/
Cara termudah untuk menginstal perpustakaan ini adalah dengan menggunakan Komposer untuk menangani dependensi Anda. Untuk menginstal perpustakaan ini melalui Komposer, cukup ikuti dua langkah berikut:
Dapatkan composer.phar
dengan menjalankan instalasi baris perintah Composer di root proyek Anda.
Setelah Anda menjalankan skrip instalasi, Anda harus memiliki file composer.phar
di root proyek Anda dan Anda dapat menjalankan perintah berikut:
php composer.phar require "riimu/kit-phpencoder:^2.3"
Setelah menginstal perpustakaan ini melalui Komposer, Anda dapat memuat perpustakaan dengan menyertakan file vendor/autoload.php
yang dihasilkan oleh Komposer selama instalasi.
Jika Anda sudah familiar dengan cara menggunakan Composer, Anda dapat menambahkan perpustakaan sebagai dependensi dengan menambahkan file composer.json
berikut ke proyek Anda dan menjalankan perintah composer install
:
{
"require" : {
"riimu/kit-phpencoder" : " ^2.3 "
}
}
Jika Anda tidak ingin menggunakan Komposer untuk memuat pustaka, Anda juga dapat mengunduh pustaka secara manual dengan mengunduh rilis terbaru dan mengekstrak folder src
ke proyek Anda. Anda kemudian dapat memasukkan file src/autoload.php
yang disediakan untuk memuat kelas perpustakaan.
Metode paling relevan yang disediakan oleh perpustakaan ini adalah metode encode()
yang disediakan oleh PHPEncoder
. Metode ini mengambil nilai apa pun sebagai argumen dan mengembalikan representasi kode PHP untuk nilai tersebut.
Misalnya:
<?php
require ' vendor/autoload.php ' ;
$ encoder = new Riimu Kit PHPEncoder PHPEncoder ();
echo $ encoder -> encode ([ ' foo ' => ' bar ' , [ 1 , true , false , null , 1.0 ]]);
Ini akan menghasilkan keluaran berikut:
[
'foo' => 'bar',
[1, true, false, null, 1.0],
]
Tentu saja, fitur terpenting dari perpustakaan ini adalah kemampuan untuk menyesuaikan kode PHP yang dibuat. Sebagai argumen kedua, metode encode()
mengambil serangkaian opsi, yang dapat digunakan untuk menyesuaikan kode PHP yang dikembalikan. Misalnya:
<?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 ,
]);
Ini akan menghasilkan keluaran berikut:
[
'foo' => 'bar',
0 => [
0 => 1,
1 => TRUE,
2 => FALSE,
3 => NULL,
4 => 1.0,
],
]
Opsi pengkodean memungkinkan Anda menyesuaikan keluaran metode encode()
. Opsi ini dapat diatur dalam tiga cara berbeda:
PHPEncoder
.setOption()
.encode()
. Perhatikan bahwa opsi yang diteruskan ke metode encode()
hanya bersifat sementara dan tidak berlaku untuk panggilan berikutnya.
spasi putih : <boolean> (benar)
Bila disetel ke false
, pembuatan semua spasi tambahan akan dinonaktifkan dan semua pengaturan lain yang memengaruhi spasi akan diabaikan.
hex.capitalize : <boolean> (salah)
Jika disetel ke true
semua karakter heksadesimal dalam output ditulis menggunakan huruf besar, bukan huruf kecil.
null.mengkapitalkan : <boolean> (salah)
Jika disetel ke true
, semua nilai null
ditulis dalam huruf besar, bukan huruf kecil.
boolean.capitalize : <boolean> (salah)
Jika disetel ke true
, semua nilai true
dan false
ditulis dalam huruf besar, bukan huruf kecil.
integer.type : <"biner"|"oktal"|"desimal"|"heksadesimal"> ("desimal")
Ubah sintaks keluaran bilangan bulat. Misalnya, menggunakan tipe "hexadecimal"
akan menghasilkan angka 15
sebagai 0xf
.
float.integers : <boolean|"semua"> (salah)
Jika disetel ke true
, float apa pun yang mewakili bilangan bulat dan memiliki nilai yang secara akurat diwakili oleh bilangan floating point akan dikodekan sebagai bilangan bulat, bukan float. (misalnya nilai 2.0
akan dikodekan sebagai 2
). Untuk menyertakan nilai yang tidak terwakili secara akurat, Anda dapat menyetel opsi ke "all"
.
float.export : <boolean> (salah)
Ketika disetel ke true
float dikodekan menggunakan var_export()
, yang menyebabkan keluaran yang sedikit berbeda pada bilangan floating point non integer dibandingkan dengan metode standar yang diterapkan. Dalam beberapa kasus, hal ini mungkin menghasilkan angka yang lebih akurat tetapi representasinya kurang jelas.
float.presisi : <integer|false> (17)
Ketepatan maksimum dari nilai floating point yang dikodekan, yang biasanya juga berarti jumlah digit maksimum dalam float yang dikodekan. Jika nilainya disetel ke false
, pengaturan PHP ini serialize_precision
akan digunakan sebagai gantinya. Perhatikan bahwa karena cara kerja nilai floating point, nilai yang lebih besar dari 17 tidak memberikan presisi tambahan apa pun.
string.biner : <boolean> (salah)
Jika disetel ke true
string apa pun yang tidak valid UTF-8 akan dikodekan dalam basis 64 dan dibungkus dengan panggilan base64_decode()
.
string.escape : <boolean> (benar)
Jika disetel ke true
, semua string yang berisi byte di luar rentang ASCII 32-126 akan ditulis dengan tanda kutip ganda dan karakter di luar rentang tersebut akan di-escape.
string.utf8 : <boolean> (salah)
Ketika opsi ini dan string.escape
diatur ke true
, semua karakter UTF-8 multibyte yang valid dalam string dikodekan menggunakan sintaks titik kode unicode PHP7. Perhatikan bahwa sintaks ini tidak berfungsi di PHP versi lebih awal dari 7.0.
string.kelas : <string[]> ([])
Mendefinisikan daftar kelas atau awalan namespace kelas untuk kelas yang dapat dikodekan menggunakan operator resolusi kelas ::class
ketika ditemui dalam string. misalnya memberikan nilai ['Riimu\']
akan mengkodekan semua string yang terlihat seperti nama kelas di namespace Riimu
seperti RiimuKitPHPEncoder::class
.
string.impor : <string[]> ([])
Daftar impor yang digunakan dalam file kode yang dihasilkan, yang memungkinkan nama kelas ditulis menggunakan format yang lebih pendek. Daftar tersebut harus berupa array asosiatif dengan namespace atau kelas sebagai kunci dan nama yang digunakan sebagai nilainya. Gunakan string kosong untuk menunjukkan namespace saat ini.
Misalnya, jika file yang dihasilkan memiliki namespace RiimuKitPHPEncoder;
dan use PHPUnitFrameworkTestCase;
, Anda dapat mengatur array sebagai ['Riimu\Kit\PHPEncoder\' => '', 'PHPUnit\Framework\TestCase' => 'TestCase']
array.short : <boolean> (benar)
Jika disetel ke true
, array diapit menggunakan tanda kurung siku []
dan bukan menggunakan notasi array panjang array()
.
array.base : <integer|string> (0)
Indentasi dasar untuk array sebagai jumlah spasi atau string. Memberikan kemudahan saat Anda perlu mengeluarkan kode ke file dengan tingkat indentasi tertentu.
array.indent : <integer|string> (4)
Jumlah indentasi untuk satu tingkat indentasi sebagai jumlah spasi atau string.
array.align : <boolean> (salah)
Jika disetel ke true
, operator penetapan array =>
disejajarkan ke kolom yang sama menggunakan spasi. Meskipun diaktifkan, opsi array.omit
dan array.inline
tetap diterapkan, tetapi hanya jika semua kunci dalam array tertentu dapat dihilangkan.
array.inline : <boolean|integer> (70)
Jika disetel ke true
, larik apa pun yang dapat ditulis tanpa kunci larik apa pun akan ditulis dalam satu baris. Jika bilangan bulat disediakan, array akan ditulis sebagai satu baris hanya jika tidak melebihi jumlah karakter tersebut. Opsi ini tidak berpengaruh ketika array.omit
disetel ke false.
array.hilangkan : <boolean> (benar)
Bila disetel ke true
, kunci larik redundan apa pun tidak akan disertakan (misalnya larik [0 => 'a', 1 => 'b']
akan dikodekan seperti ['a', 'b']
).
array.eol : <string|false> (salah)
Karakter akhir baris yang digunakan oleh keluaran array. Jika disetel ke false
, PHP_EOL
default akan digunakan.
objek.metode : <boolean> (benar)
Jika disetel ke true
, objek apa pun yang dikodekan akan diperiksa metodenya toPHP()
dan toPHPValue()
. Jika metode toPHP()
ada, string yang dikembalikan akan digunakan sebagai representasi kode PHP dari objek. Jika metode toPHPValue()
ada, nilai yang dikembalikan akan dikodekan sebagai PHP dan digunakan sebagai representasi kode objek.
objek.format : <string> ('vars')
Format pengkodean objek default. Nilai yang mungkin adalah:
string
melemparkan objek ke string dan kemudian mengkodekan string itu sebagai PHP.serialize
membuat serialisasi objek dan membungkusnya dengan unserialize()
export
meniru representasi objek var_export()
array
melemparkan objek ke dalam array dan mengkodekan array ituvars
mengubah objek menjadi array menggunakan get_object_vars()
iterate
mengubah objek menjadi array dengan mengulanginya menggunakan foreach
objek.cast : <boolean> (benar)
Apakah akan menambahkan pemeran (object)
di depan array yang dihasilkan dari objek atau tidak saat menggunakan format pengkodean objek vars
, array
atau iterate
.
rekursi.deteksi : <boolean> (benar)
Jika disetel ke true
, encoder akan mencoba mendeteksi referensi melingkar dalam array dan objek untuk menghindari loop tak terbatas.
rekursi.ignore : <boolean> (salah)
Jika disetel ke true
, referensi melingkar apa pun akan diganti dengan null
alih-alih memberikan pengecualian.
rekursi.max : <integer|false> (salah)
Jumlah level maksimum saat menyandikan array dan objek. Pengecualian dilemparkan ketika batas maksimum terlampaui. Setel ke false
agar tidak memiliki batas.
Perpustakaan ini adalah Hak Cipta (c) 2013-2022 Riikka Kalliomäki.
Lihat LISENSI untuk informasi lisensi dan penyalinan.