PHPEncoder هي مكتبة PHP لتصدير المتغيرات وإنشاء تمثيلات كود PHP للمتغيرات المذكورة المشابهة للوظيفة المضمنة var_export()
. ومع ذلك، بالمقارنة مع الوظيفة المضمنة، توفر هذه المكتبة المزيد من الخيارات لتخصيص الإخراج، مما يجعل من السهل إنشاء تعليمات برمجية لأنواع مختلفة من الأغراض مثل ملفات التكوين القابلة للقراءة أو ملفات ذاكرة التخزين المؤقت المحسنة.
الغرض من هذه المكتبة هو معالجة بعض أوجه القصور في var_export()
المدمج. على سبيل المثال، لا توجد طريقة للتحكم في مقدار المسافة البيضاء في الإخراج ولا توجد طريقة للاختيار بين رموز المصفوفة المختلفة. توفر هذه المكتبة أيضًا وظيفة لتحويل الكائنات إلى كود PHP وهو أمر مفيد بالفعل عند مقارنته بالوظيفة المضمنة.
يتيح لك العدد الكبير من خيارات التخصيص في هذه المكتبة إنشاء تعليمات برمجية تناسب أغراضك. يمكنك إنشاء تعليمات برمجية مضغوطة جدًا، عندما تحتاج إلى تحديد حجم المخرجات، أو يمكنك إنشاء تعليمات برمجية بالنمط الذي يناسب أيًا من ملفات PHP التي تم إنشاؤها ديناميكيًا.
وثائق واجهة برمجة التطبيقات متاحة على: http://kit.riimu.net/api/phpencoder/
أسهل طريقة لتثبيت هذه المكتبة هي استخدام Composer للتعامل مع تبعياتك. لتثبيت هذه المكتبة عبر Composer، ما عليك سوى اتباع الخطوتين التاليتين:
احصل على composer.phar
عن طريق تشغيل تثبيت سطر أوامر Composer في جذر مشروعك.
بمجرد تشغيل البرنامج النصي للتثبيت، يجب أن يكون لديك ملف composer.phar
في جذر المشروع الخاص بك ويمكنك تشغيل الأمر التالي:
php composer.phar require "riimu/kit-phpencoder:^2.3"
بعد تثبيت هذه المكتبة عبر Composer، يمكنك تحميل المكتبة عن طريق تضمين ملف vendor/autoload.php
الذي تم إنشاؤه بواسطة Composer أثناء التثبيت.
إذا كنت على دراية بكيفية استخدام Composer، فيمكنك بدلاً من ذلك إضافة المكتبة باعتبارها تبعية عن طريق إضافة ملف composer.json
التالي إلى مشروعك وتشغيل أمر composer install
:
{
"require" : {
"riimu/kit-phpencoder" : " ^2.3 "
}
}
إذا كنت لا ترغب في استخدام Composer لتحميل المكتبة، فيمكنك أيضًا تنزيل المكتبة يدويًا عن طريق تنزيل أحدث إصدار واستخراج المجلد src
إلى مشروعك. يمكنك بعد ذلك تضمين ملف src/autoload.php
المتوفر لتحميل فئات المكتبة.
الطريقة الأكثر صلة التي توفرها هذه المكتبة هي طريقة encode()
التي توفرها PHPEncoder
. تأخذ الطريقة أي قيمة كوسيطة وتقوم بإرجاع تمثيل كود PHP لتلك القيمة.
على سبيل المثال:
<?php
require ' vendor/autoload.php ' ;
$ encoder = new Riimu Kit PHPEncoder PHPEncoder ();
echo $ encoder -> encode ([ ' foo ' => ' bar ' , [ 1 , true , false , null , 1.0 ]]);
سيؤدي هذا إلى إنشاء الإخراج التالي:
[
'foo' => 'bar',
[1, true, false, null, 1.0],
]
وبطبيعة الحال، فإن الميزة الأكثر أهمية في هذه المكتبة هي القدرة على تخصيص كود PHP الذي تم إنشاؤه. كالوسيطة الثانية، يأخذ الأسلوب encode()
مجموعة من الخيارات، والتي يمكن استخدامها لتخصيص كود PHP الذي تم إرجاعه. على سبيل المثال:
<?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 ,
]);
سيؤدي هذا إلى إنشاء الإخراج التالي:
[
'foo' => 'bar',
0 => [
0 => 1,
1 => TRUE,
2 => FALSE,
3 => NULL,
4 => 1.0,
],
]
تتيح لك خيارات التشفير تخصيص مخرجات encode()
. من الممكن ضبط هذه الخيارات بثلاث طرق مختلفة:
PHPEncoder
.setOption()
.encode()
. لاحظ أن الخيارات التي تم تمريرها إلى طريقة encode()
هي فقط مؤقتة ولا تنطبق على الاستدعاءات التالية.
مسافة بيضاء : <منطقية> (صحيح)
عند التعيين على false
، يتم تعطيل إنشاء كل المسافات البيضاء الإضافية ويتم تجاهل كافة الإعدادات الأخرى التي تؤثر على المسافات البيضاء.
hex.capitalize : <boolean> (خطأ)
عند التعيين على true
تتم كتابة كافة الأحرف السداسية العشرية في الإخراج باستخدام الأحرف الكبيرة بدلاً من الأحرف الصغيرة.
null.capitalize : <boolean> (خطأ)
عند التعيين على true
، تتم كتابة كافة القيم null
بأحرف كبيرة بدلاً من الأحرف الصغيرة.
boolean.capitalize : <boolean> (خطأ)
عند التعيين على true
، تتم كتابة كافة القيم true
false
بالأحرف الكبيرة بدلاً من الأحرف الصغيرة.
integer.type : <"ثنائي"|"ثماني"|"عشري"|"سداسي عشري"> ("عشري")
تغيير بناء جملة الإخراج للأعداد الصحيحة. على سبيل المثال، استخدام النوع "hexadecimal"
سيؤدي إلى إخراج الرقم 15
على هيئة 0xf
.
float.integers : <boolean|"all"> (خطأ)
عند التعيين على true
، فإن أي عدد عشري يمثل عددًا صحيحًا وله قيمة يتم تمثيلها بدقة بواسطة رقم الفاصلة العائمة سيتم ترميزه كعدد صحيح بدلاً من عدد عشري. (على سبيل المثال، سيتم ترميز القيمة 2.0
بالرقم 2
). لتضمين القيم التي لم يتم تمثيلها بدقة، يمكنك ضبط الخيار على "all"
.
float.export : <boolean> (خطأ)
عند التعيين على القيمة true
، يتم ترميزها باستخدام var_export()
، مما يؤدي إلى مخرجات مختلفة قليلاً على أرقام الفاصلة العائمة غير الصحيحة مقارنة بالطريقة القياسية المطبقة. وفي بعض الحالات، قد ينتج عن ذلك أرقام أكثر دقة ولكن مع تمثيل أقل وضوحًا.
الدقة العائمة : <عدد صحيح|خطأ> (17)
الدقة القصوى لقيم الفاصلة العائمة المشفرة، والتي تعني عادةً أيضًا الحد الأقصى لعدد الأرقام في الأعداد العشرية المشفرة. إذا تم ضبط القيمة على false
، فسيتم استخدام إعداد PHP ini serialize_precision
بدلاً من ذلك. لاحظ أنه نظرًا للطريقة التي تعمل بها قيم الفاصلة العائمة، فإن القيمة الأكبر من 17 لا توفر أي دقة إضافية.
سلسلة ثنائية : <boolean> (خطأ)
عند التعيين على true
سيتم ترميز أي سلسلة غير صالحة باستخدام UTF-8 في الأساس 64 وملفوفة باستدعاء base64_decode()
.
string.escape : <boolean> (صحيح)
عند التعيين على true
، ستتم كتابة جميع السلاسل التي تحتوي على بايتات خارج نطاق ASCII 32-126 بعلامات اقتباس مزدوجة وسيتم تجاوز الأحرف الموجودة خارج النطاق.
string.utf8 : <boolean> (خطأ)
عندما يتم تعيين كل من هذا الخيار و string.escape
على true
، يتم تشفير جميع أحرف UTF-8 الصالحة متعددة البايت في السلاسل باستخدام بناء جملة نقطة الكود PHP7 unicode. لاحظ أن بناء الجملة هذا لا يعمل في إصدارات PHP الأقدم من 7.0.
سلسلة.فئات : <سلسلة[]> ([])
يحدد قائمة الفئات أو بادئات مساحة اسم الفئة للفئات التي يمكن ترميزها باستخدام عامل تحليل الفئة ::class
عند مواجهتها في سلاسل. على سبيل المثال، فإن توفير القيمة ['Riimu\']
سيؤدي إلى تشفير جميع السلاسل التي تشبه أسماء الفئات في مساحة اسم Riimu
مثل RiimuKitPHPEncoder::class
.
string.imports : <string[]> ([])
قائمة الواردات المستخدمة في ملف التعليمات البرمجية الناتج، والذي يسمح بكتابة أسماء الفئات باستخدام تنسيق أقصر. يجب أن تكون القائمة عبارة عن مصفوفة ترابطية مع مساحة الاسم أو الفئة كمفتاح والاسم المستخدم كقيمة. استخدم سلسلة فارغة للإشارة إلى مساحة الاسم الحالية.
على سبيل المثال، إذا كان الملف الناتج سيتضمن namespace RiimuKitPHPEncoder;
use PHPUnitFrameworkTestCase;
، يمكنك إعداد المصفوفة كـ ['Riimu\Kit\PHPEncoder\' => '', 'PHPUnit\Framework\TestCase' => 'TestCase']
المصفوفة القصيرة : <boolean> (صحيح)
عند التعيين على true
، يتم تضمين المصفوفات باستخدام الأقواس المربعة []
بدلاً من استخدام تدوين المصفوفة الطويلة array()
.
array.base : <عدد صحيح|سلسلة> (0)
المسافة البادئة الأساسية للصفائف كعدد من المسافات أو كسلسلة. يوفر الراحة عندما تحتاج إلى إخراج التعليمات البرمجية إلى ملف بمستوى محدد من المسافة البادئة.
مسافة الصفيف : <عدد صحيح|سلسلة> (4)
مقدار المسافة البادئة لمستوى واحد من المسافة البادئة كعدد من المسافات أو سلسلة.
صفيف.محاذاة : <boolean> (خطأ)
عند التعيين على true
، تتم محاذاة عوامل تعيين المصفوفة =>
إلى نفس العمود باستخدام المسافات. حتى في حالة تمكينها، ستظل خيارات array.omit
و array.inline
محترمة، ولكن فقط إذا كان من الممكن حذف جميع المفاتيح الموجودة في المصفوفة المحددة.
array.inline : <boolean|عدد صحيح> (70)
عند التعيين على true
، سيتم كتابة أي مصفوفة يمكن كتابتها بدون أي مفاتيح مصفوفة في سطر واحد. إذا تم توفير عدد صحيح بدلاً من ذلك، فسيتم كتابة المصفوفة كسطر واحد فقط إذا لم يتجاوز هذا العدد من الأحرف. ليس لهذا الخيار أي تأثير عند ضبط array.omit
على false.
array.omit : <boolean> (صحيح)
عند التعيين على true
، لن يتم تضمين أي مفاتيح مصفوفة زائدة عن الحاجة (على سبيل المثال، سيتم تشفير المصفوفة [0 => 'a', 1 => 'b']
تمامًا مثل ['a', 'b']
).
array.eol : <string|false> (خطأ)
نهاية حرف السطر المستخدم بواسطة إخراج الصفيف. عند التعيين على false
، سيتم استخدام PHP_EOL
الافتراضي بدلاً من ذلك.
أسلوب الكائن : <boolean> (صحيح)
عند التعيين على true
، سيتم فحص أي كائن مشفر بحثًا عن الأساليب toPHP()
و toPHPValue()
. إذا كان التابع toPHP()
موجودًا، فسيتم استخدام السلسلة التي تم إرجاعها كتمثيل كود PHP للكائن. إذا كان الأسلوب toPHPValue()
موجودًا بدلاً من ذلك، فسيتم ترميز القيمة التي تم إرجاعها كـ PHP واستخدامها كتمثيل رمزي للكائن.
تنسيق الكائن : <string> ('vars')
تنسيق ترميز الكائن الافتراضي. القيم المحتملة هي:
string
بتحويل الكائن إلى سلسلة ثم تقوم بتشفير تلك السلسلة كـ PHP.serialize
بإجراء تسلسل للكائن ولفه باستخدام unserialize()
export
تمثيل كائن var_export()
array
يلقي الكائن إلى مصفوفة ويقوم بتشفير تلك المصفوفةvars
بتحويل الكائن إلى مصفوفة باستخدام get_object_vars()
iterate
بتحويل الكائن إلى مصفوفة عن طريق التكرار فوقه باستخدام foreach
object.cast : <boolean> (صحيح)
ما إذا كان سيتم إضافة (object)
أمام المصفوفات التي تم إنشاؤها من الكائنات أم لا عند استخدام تنسيقات ترميز الكائنات vars
أو array
أو iterate
.
اكتشاف العودية : <boolean> (صحيح)
عند التعيين على true
، سيحاول برنامج التشفير اكتشاف المراجع الدائرية في المصفوفات والكائنات لتجنب الحلقات اللانهائية.
العودية.تجاهل : <boolean> (خطأ)
عند التعيين على true
، سيتم استبدال أي مرجع دائري بـ null
بدلاً من طرح استثناء.
العودية.ماكس : <عدد صحيح|خطأ> (خطأ)
الحد الأقصى لعدد المستويات عند تشفير المصفوفات والكائنات. يتم طرح الاستثناء عند تجاوز الحد الأقصى. اضبط على false
بحيث لا يوجد حد.
حقوق الطبع والنشر لهذه المكتبة (c) 2013-2022 محفوظة لـ Riikka Kalliomäki.
راجع الترخيص للحصول على معلومات الترخيص والنسخ.