اقرأ النسخة الإنجليزية من هذه الوثيقة: الإنجليزية
اقرأ هذه الوثيقة بلغات أخرى: الإنجليزية، الصينية المبسطة .
مع الصعود القوي لـ Go
و NodeJS
، تآكلت حصة PHP
في السوق تدريجيًا، لكن PHP
لا تزال ملتزمة رسميًا بمجال برمجة Web
. تصبح بعض الأشياء أكثر صعوبة في التمسك بها كلما حاولت التمسك بها. يعتمد polarphp
على الميزات ذات الصلة بـ NodeJS
و Go
لإعادة تغليف zendVM
، وإزالة بعض ميزات PHP
القديمة المهجورة وسمات Web
القوية، وتنفيذ مجموعة جديدة من إطار عمل وقت التشغيل libpdk
لبناء لغة PHP
لتصبح لغة برمجة نصية عالمية حقًا، مما يتيح PHP
مع برمجة غير متزامنة، وcoroutines، وخيوط، ودعم unicode
مدمج، IO
للملف القياسي وميزات أخرى، مما يسمح لمبرمجي PHP
ليس فقط بتنفيذ تطبيقات web
، ولكن أيضًا بمواجهة التطبيقات الحقيقية من جانب الخادم بهدوء. polarphp
ليست لغة جديدة، ولكنها مترجم ووقت تشغيل جديد للغة PHP
بالإضافة إلى اللغة الرسمية.
PHP
وإزالة ميزات اللغة القديمة unicode
المضمنة نظراً لمحدودية موارد التطوير، تم وضع خطة التطوير مبدئياً على النحو التالي:
PHP
الخاص بكlit
لمشروع زرع LLVM
polarphp
باستخدام إطار اختبار الانحدار phplit
polarvm
وأكمل البنية التحتية للجهاز الظاهريpolarphp
AST إلى مجموعة التعليمات، ولا تحدد طبقة IR في الوقت الحالي.phplit
لاختبار جميع الوحدات المجمعة بدءًا من بنية اللغة وحتى مجموعة التعليماتGC
المدمج في PHP
PHP
القياسية libpdk
(جزء cpp
)polarphp
بأقل عدد من الخطوات.PHP
قياسية كاملة الوظائف (يتم تنفيذها باستخدام كود PHP
مع الدعم الأساسي لـ libpdk
) polarphp
git clone https://github.com/polarphp/polarphp.git
cd polarphp
git submodule init
git submodule update
git checkout v0.0.1-alpha
./devtools/scripts/build_polarphp.sh
في هذا الوقت، يبدأ البرنامج النصي في تجميع الصور ذات الصلة، الأمر الذي يستغرق وقتًا طويلاً، يرجى الانتظار بصبر. انتظر حتى يكتمل التجميع وتقوم بتشغيل:
docker images
في هذا الوقت، يرجى التأكد من وجود الصورة التالية في الإخراج:
إذا لم تكن هناك مشكلة، نبدأ باختبار ما إذا كان polarphp
يعمل بشكل طبيعي في المرآة.
docker run --rm -it polarphp_debug
بعد الدخول إلى الحاوية، أدخل برنامج سطر أوامر polarphp
الخاص بنا
polar --version
إذا حصلت على الإخراج التالي:
polarphp 0.0.1-git (built: 2019-01-27 12:22)
Copyright (c) 2016-2018 The polarphp foundation (https://polar.foundation)
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies
تهانينا، لقد نجحت في تجميع بيئة تشغيل polarphp
. عند تجميع الصورة، قمنا بوضع برنامج نصي للاختبار في المجلد ~/temp/
if ( function_exists ( ' phpretrieve_version_str ' )) {
echo " version str: " . php retrieve_version_str () . "n" ;
}
if ( function_exists ( ' phpretrieve_major_version ' )) {
echo " major version: " . php retrieve_major_version () . "n" ;
}
if ( function_exists ( ' phpretrieve_minor_version ' )) {
echo " minor version: " . php retrieve_minor_version () . "n" ;
}
if ( function_exists ( ' phpretrieve_patch_version ' )) {
echo " patch version: " . php retrieve_patch_version () . "n" ;
}
يمكنك تشغيل الأمر التالي:
polar ~/temp/main.php
إذا لم تكن هناك أخطاء، سوف تحصل على الإخراج التالي:
version str: polarphp 0.0.1-git
major version: 0
minor version: 0
patch version: 1
شكرًا لك على اختبار polarphp
. إذا كانت لديك أي أسئلة، فيرجى مسح رمز الاستجابة السريعة WeChat أدناه للانضمام إلى التواصل الجماعي.
في الوقت الحالي، نستهدف المستخدمين في الصين فقط، لذلك نستخدم مجموعات WeChat و QQ
للتواصل، ويمكن للطلاب المهتمين مسح الرمز ضوئيًا للانضمام:
ملاحظة: يرجى الإشارة إلى غرض زيارتك عند مسح رمز QR، على سبيل المثال: تعلم هواة
polarphp
أوPHP
تجري polarphp
تطويرًا ثانويًا بالإضافة إلى مشروع لغة php
وتلتزم باتفاقية مشروع php
لمزيد من التفاصيل، يرجى الاطلاع على: اتفاقية المشروع
======================================================