PHAR ما هو؟ وكيف التعامل معه؟
اثناء بحثي في شبكة الانترنت في المنتديات والمواقع العربية كنت ابحث عن PHAR وشروحاته عنه وما شابه ذلك, لكني دهشت عندما لم اجد اي
شيء عنه ولو ذكر حتى! لاكون عادل وجدت ذكر فقط للاسم في احد المنتديات التي اعلنت خبر ظهور php 5.3 alpha1 سنة 2008!
فقلت لنشرح هذه الاضافة الرائعة!
ما هو PHAR هي اضافة للغة php وهي افتراضية بعد اصدار 5.3 ولكن ما هي هذه الاضافة؟
اذا كنت مبرمج java وتعلم ما هو JAR ؟ فهو بنفس المبدأ
phar is jar but for php
اذا هل علمتم ما هي الان يا مبرمجين الجافا؟
لغير مبرمجين الجافا, phar هي اضافة للغة php تمكنك من وضع مشروعك كاملاً في ملف واحد!
سؤال: هل توجد مشاريع تستعمل هذه الاضافة؟
الاجابة: نعم بالطبع, اشهر الامثلة هو مشروع composer وغيره – استعمل القوقل لمعرفة المزيد عن المشروع –
لكن ماذا اقصد بمشروعي كاملاً؟ لنقل ان مشروعك 50 ملف او 20 ملف او اكثر – الملفات كثيرة لا يهم العدد –
وتحتاج الى ضغط المشروع الى ملف واحد وتقليل الحجم! لعدة اسباب مثلاً, تحتاج الى برمجة اداة عمل سريع وتريد ان تكون اداة قوية مثل composer
وسهلت التطوير , فإذاً يجب عليك ان تستعمل phar والجميل ايضا يمكنك ان تضغط المحتوى
وتم تعريف phar في موقع اللغة انه افضل طريقة لجمع اكثر من ملف في ملف واحد – هذا يعني لا يهم نوع الملف 😉 –
والان كيف يتم التعامل مع PHAR؟
ساستعمل اسلوبي في برمجة
نحتاج الى عمل 3 مجلدين – او لا الامر عائد لك لكن انا احب تنظيم العمل الى كبر حد ممكن –
نسمي الاول src ( سيحتوي على السورس كود الخاص في مشروعنا او اداتنا او السكربت …الخ )
والثاني نسميه build ( سيحتوي على المخرجات الخاصة بنا )
وننشئ ملف ونسميه build.php – هذا الملف سيكون لنا ملف الـphar –
ملحوظة : انا سوف اقوم بشرح بسيط للموضوع فقط والباقي عليك واجتهادك واي سؤال التعليقات مفتوحة
نفتح ملف build.php ونضع هذا الكود
<?php
/** This file must be kept simple, for compatibility with other servers **/
$src = __DIR__.’/src/’; #1
$build = __DIR__.’/build/’; #2$phar = new Phar($build. “/myapp.phar”,0, “myapp.phar”); #3
$phar->buildFromDirectory($src); #4
$phar->compressFiles(Phar::GZ); #5
$phar->setStub($phar->createDefaultStub(“stub.php”)); #6
طبعا شرح الكود هو:
- عرفنا متغير بحتوي على مسار مجلد src ومحتواه هو السورس كود للمشروع
- متغير يحتوي على مسار المخرجات
- عرفنا متغير والكائن الخاص في phar للمزيد من المعلومات حول parameters الخاصة في هذا الكلاس هنا
- ادراج جميع الملفات داخل مجلد src
- الضغط
- اختيار الـstub الخاص في الـphar وهو الملف الذي سيتم استدعاءه عند تنفيذ ملف الـphar بمعنى اذا عملت include او تنفيذ للارشيف سوف يتم تنفيذ هذا الملف وهو في هذه الحالة هو stub.php ومن الممكن الاستغناء عن هذه الخطوة وسيعمل المشروع على تنفيذ ملف index.php واذا لم يتم ايجاده سوف يتم اخراج تحذير بسبب عدم وجود الملف
والان كل ما تبقى علينا هو انشاء ملف باسم stub.php داخل المجلد src وكتابة اي كود تريده وليكن مثلا
<?php
/**
* Simple Test
*/
echo “This is a phar test in php\n”;
?>
احفظ الملف وقم بتشغيل ملف build.php والنتيجة ملف باسم myapp.phar داخل مجلد build واذا نفذت الملف الناتج سيكون
$php build/myapp.phar
This is a phar test in php
$
في هذه المقالة البسيطة انا فقط شرحت فكرة عامة للمشروع للمزيد عن هذا المشروع PHAR
اي سؤال انا موجود 🙂
إرسال التعليق