ClassLoader هي مكتبة PHP لفصول التحميل التلقائي. يعني التحميل التلقائي للصف أنه يتم تحميل الفصول فقط عندما تكون هناك حاجة إليها بالفعل بدلاً من الاضطرار إلى تضمين كل ملف فئة على كل تنفيذ. هذا يقلل من تحميل الصفحات بشكل خاص على مواقع الويب الكبيرة ، حيث يجب تحميل بعض ملفات الفصل فقط. عادةً ما يتم تحميل الفئات أيضًا بشكل ديناميكي من الملفات التي تحتوي على أسماء الملفات بناءً على مساحة الاسم واسم الفصل. هذا أيضًا يجعل من السهل إدارة عدد كبير من ملفات الفصل.
تدعم هذه المكتبة اثنين من المعايير الحالية لفصول التحميل التلقائي ، وهما PSR-0 و PSR-4. الفكرة الأساسية وراء هذه المعايير هي أن ملفات الفئة موجودة في الدلائل بناءً على مساحة اسمها وفي الملفات المسمى على بعد الفصل. الفرق الرئيسي بين هذين المعيارين هو أن PSR-4 لا يتطلب أن تكون مساحة الاسم بأكملها موجودة في التسلسل الهرمي للدليل.
ومع ذلك ، نظرًا لأن تشغيل ملفات الفئة الفعلية تميل إلى أن تكون مكلفة نسبيًا ، فإن هذه المكتبة توفر أيضًا آليات التخزين المؤقت الأساسية التي تسمح بتخزين مواقع ملفات الفصل في ملف PHP. مع التخزين المؤقت ، يصبح فرق الأداء بين التحميل التلقائي وتحميل الملفات يدويًا ضئيلًا.
يمكن قراءة وثائق API ، التي يمكن إنشاؤها باستخدام Apigen ، عبر الإنترنت على: http://kit.riimu.net/api/Classloader/
أسهل طريقة لتثبيت هذه المكتبة هي استخدام الملحن للتعامل مع تبعياتك. من أجل تثبيت هذه المكتبة عبر الملحن ، ما عليك سوى اتباع هاتين الخطوتين:
الحصول على composer.phar عن طريق تشغيل تركيب سطر الأوامر الملحن في جذر المشروع الخاص بك.
بمجرد تشغيل البرنامج النصي للتثبيت ، يجب أن يكون لديك ملف composer.phar في جذر المشروع الخاص بك ويمكنك تشغيل الأمر التالي:
php composer.phar require "riimu/kit-classloader:^4.4"
بعد تثبيت هذه المكتبة عبر الملحن ، يمكنك تحميل المكتبة من خلال تضمين ملف vendor/autoload.php الذي تم إنشاؤه بواسطة الملحن أثناء التثبيت.
إذا كنت معتادًا بالفعل على كيفية استخدام الملحن ، فيمكنك إضافة المكتبة بدلاً من ذلك كاعتماد عن طريق إضافة ملف composer.json التالي إلى مشروعك وتشغيل أمر composer install :
{
"require" : {
"riimu/kit-classloader" : " ^4.4 "
}
} إذا كنت لا ترغب في استخدام الملحن لتحميل المكتبة ، فيمكنك أيضًا تنزيل المكتبة يدويًا عن طريق تنزيل أحدث إصدار واستخراج مجلد src لمشروعك. يمكنك بعد ذلك تضمين ملف src/autoload.php المقدم لتحميل فئات المكتبة.
يدعم ClassLoader التحميل التلقائي على النحو المحدد في معايير PSR-0 و PSR-4 من خلال الأساليب addBasePath() و addPrefixPath() على التوالي. لا تحتاج إلى فهم هذه المعايير لاستخدام هذه المكتبة ، ما عليك سوى استخدام الطريقة التي تناسبك بشكل أفضل.
يحدد التحميل التلقائي لـ PSR-0 ، أنه يجب وضع ملفات الفئة في شجرة دليل تعكس مساحة الاسم. على سبيل المثال ، يمكن تحديد موقع فئة "foo bar baz" في ملف '/path/to/classes/foo/bar/baz.php'. عادة ما تكون هذه الطريقة أبسط طريقة لوضع ملفات الفصل الخاصة بك.
باستخدام طريقة addBasePath() ، يمكنك تحديد الدلائل الأساسية التي يجب البحث فيها عن الفصول الدراسية. لتحميل الفئة المذكورة أعلاه ، يمكنك استخدام الكود التالي:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();إذا كان دليل معين ينطبق فقط على مساحة اسم محددة ، فيمكنك استخدام المعلمة الثانية لتحديد مساحة الاسم أيضًا. ومع ذلك ، لا يزال الدليل بحاجة إلى الإشارة إلى الدليل الأساسي لمساحة الاسم. على سبيل المثال:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();لاحظ أن PSR-0 ينص أيضًا على أن التأكيد في اسم الفصل يتم التعامل معه على أنه فواصل مساحة الاسم (ولكن لا يتم التأكيد عليه في مساحات الأسماء). لذلك ، حتى لو كان يطلق على فصلك اسم "foo bar_baz" ، فإن كلا الأمثلة المذكورة أعلاه ستظل تعمل. حتى إذا تم تعريف مساحات أسماء الفصول الدراسية باستخدام Sewrerscores في اسم الفصل ، فأنت بحاجة إلى استخدام BlackSlashes في وسيطة مساحة الاسم.
على عكس PSR-0 ، لا يتطلب معيار التحميل التلقائي لـ PSR-4 فئات فئات في شجرة دليل تعكس مساحة الاسم بأكملها. بدلاً من ذلك ، يمكن استبدال جزء من مساحة الاسم بمسار معين.
على سبيل المثال ، إذا كانت فئة "foo bar baz" موجودة في الملف "/path/to/library/baz.php" ، فيمكنك تسجيل المسار باستخدام addPrefixPath() وتحديد مساحة الاسم كما هو موضح في المثال التالي:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ( ' /path/to/Library/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz (); يتيح ذلك أن تنعكس على هياكل الدليل الأقصر لأن مساحة الاسم بأكملها لا تحتاج إلى انعكاس في شجرة الدليل. من الممكن أيضًا حذف وسيطة مساحة الاسم ، وفي هذه الحالة ، سيعمل المسار بنفس المسارات التي تمت إضافتها عبر addBasePath() ، باستثناء حقيقة أن السطح السفلي في اسم الفصل لن يتم التعامل معه كفواصل مساحة الاسم.
على الرغم من أنه يمكنك ببساطة استدعاء طرق إضافة المسار عدة مرات ، إلا أنه من الممكن إضافة مسارات متعددة باستخدام صفيف. هذا عادة ما يجعل التكوين أسهل بكثير. على سبيل المثال ، يمكنك إضافة مسارات أساسية متعددة من خلال توفير صفيف:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' /path/to/classes/ ' ,
' /other/path/ ' ,
]);
$ loader -> register ();أو يمكنك إضافة مسارات محددة مساحة الاسم من خلال توفير مجموعة نقاطية تحدد مساحات الأسماء باستخدام مفاتيح الصفيف:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' FooBar ' => ' /path/to/classes/ ' ,
' OtherNamesapace ' => [ ' /other/path/ ' , ' /some/other ' ],
]);
$ loader -> register ();كما هو موضح في المثال أعلاه ، يمكنك أيضًا توفير قائمة بالمسارات لمساحة اسم محددة.
البحث عن فئات في نظام الملفات في كل طلب هو أمر مكلف. يوصى بشدة بتخزين مواقع الملفات بحيث لا تحتاج إلى البحث في كل طلب. بعد كل شيء ، لا تميل ملفات الفصل إلى التحرك في نظام الملفات.
توفر هذه المكتبة نظام تخزين مؤقت بسيط للغاية عبر FileCacheClassLoader . تقوم الفئة بتخزين مواقع الملف في ملف PHP واحد يتم تحميله على كل طلب بدلاً من البحث عن الملفات يدويًا.
لا يختلف استخدام FileCacheClassLoader كثيرًا عن استخدام ClassLoader . تحتاج ببساطة إلى توفير المسار إلى ملف ذاكرة التخزين المؤقت القابل للكتابة في المُنشئ. سيتم استخدام الملف لتخزين مواقع الفصل وسيتم إعادة كتابته عند اكتشاف ملفات فئة جديدة. على سبيل المثال:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader FileCacheClassLoader ( __DIR__ . ' /cache.php ' );
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();هذه المكتبة هي حقوق الطبع والنشر (C) 2012-2017 Riikka Kalliomäki.
انظر ترخيص الترخيص ونسخ المعلومات.