إقلاع الإصدار المتوافق مع الأنظمة القديمة في NextPDF واكتشافه
هذه أدوات بناء، وليست اعتمادية وقت تشغيل. تشرح هذه الصفحة كيف تبدأ أداة البناء على مضيف مشرف الصيانة أو مضيف التكامل المستمر (CI). لا تُحمّل التطبيقات النهائية هذا الرمز إطلاقًا.
لمحة سريعة
قسم بعنوان «لمحة سريعة»لا تستخدم أداة البناء إطار عمل، ولا حاوية لحقن الاعتماديات، ولا اكتشافًا تلقائيًا لمزوّدي الخدمات. بدلًا من ذلك، تُربط نصوص PHP البرمجية الخاصة بواجهة سطر الأوامر (CLI) باستخدام require_once ومُحمّل PSR-4 التلقائي من Composer. في هذه الصفحة، لكلمة “الاكتشاف” معنيان محدّدان: أي مستودعات المصدر تقرؤها مرحلة الدمج، وكيف يختار المُنسِّق إعداد Rector للهدف.
نظرة عامة على خط البناء
قسم بعنوان «نظرة عامة على خط البناء»المُنسِّق هو scripts/build.php. يبدأ البناء، ثم يشغّل خمس مراحل بالترتيب. كل مرحلة محكومة ببوابة، لذلك يوقف أول إخفاق عملية البناء:
- دمج المصادر — نسخ مستودعات المصدر في شجرة واحدة.
- تشغيل خفض إصدار Rector — تشغيل مرور واحد لإصدار PHP 8.1، وتشغيل مرورين مع إصلاحات لإصدار PHP 7.4.
- توليد
composer.json— كتابة بيان الحزمة المُولَّد مع خريطةreplaceالخاصة به. - نسخ الأصول الثابتة — نسخ الترخيص وسجل تغييرات مُولَّد.
- التحقق من المُخرَجات — إحصاء ملفات PHP الصادرة؛ تُشغَّل بوابة بناء الجملة المعتمدة لاحقًا في CI.
جرى التحقق مقابل scripts/build.php (run()، step()). راجع /integrations/backport/configuration/ لتفاصيل اختيار القواعد، و/integrations/backport/production-usage/ لمعرفة بوابة CI.
اكتشاف وحدات المصدر
قسم بعنوان «اكتشاف وحدات المصدر»لا يعتمد اكتشاف المصدر على ملف بيان. يستخدم scripts/merge-sources.php خريطة ثابتة يكون مفتاحها اسم المستودع ويحدّدها الهدف.
للهدف PHP 8.1، تتضمّن الخريطة nextpdf (النواة)، وnextpdf-Artisan، وnextpdf-compat-legacy، وnextpdf-Laravel، وnextpdf-Symfony، وnextpdf-CodeIgniter، وnextpdf-Pro عندما يكون Pro مُضمَّنًا. للهدف PHP 7.4، تُختصر الخريطة إلى nextpdf فقط. تحلّ أداة البناء كل مستودع بوصفه مجلدًا شقيقًا تحت جذر --source-dir. تتحقق من كل مستودع متوقَّع قبل نسخ أي شيء. إذا كان أحدها مفقودًا، يُجهَض الدمج ويُبلَّغ عن اسمه ومساره. جرى التحقق مقابل scripts/merge-sources.php (MergeSources::__construct()، run()).
يضع الدمج النواة في src/، ويضع كل مُحوّل تحت مجلده الفرعي ذي مساحة الاسم (src/Artisan/، وsrc/Laravel/، وهكذا). يذهب Pro إلى شجرة pro/src/ منفصلة كي يتمكّن البناء من إصداره بوصفه حزمة مستقلة. جرى التحقق مقابل MergeSources (mergeCore()، mergeArtisan()، mergePro()).
تسلسل الإقلاع
قسم بعنوان «تسلسل الإقلاع»- يعمل
scripts/build.phpضمن واجهة برمجة تطبيقات خادم CLI (SAPI). يستدعي عبرrequire_onceكلًّا منmerge-sources.phpوadjust-composer.php. - تقرأ نقطة دخول CLI الخيارات باستخدام
getopt()—--version، و--source-dir، و--output-dir، و--target، و--dry-run، و--no-pro. - تُنشأ نسخة من
Build. يتحقق المُنشئ من--targetمقابل['php74', 'php81']، ويطلقInvalidArgumentExceptionلأي قيمة غير صالحة قبل بدء أي عمل. للهدف PHP 7.4، يفرض إخراج النواة فقط ويعطّل Pro. - ينفّذ
Build::run()المراحل الخمس ويخرج بالحالة 0 عند النجاح، أو 1 عند أول إخفاق.
جرى التحقق مقابل scripts/build.php (نقطة دخول CLI، وBuild::__construct()، وrun()).
روابط الحاوية
قسم بعنوان «روابط الحاوية»غير منطبق. أداة البناء هي أداة CLI. ليست لها حاوية حقن اعتماديات ولا حاوية خدمات إطار عمل. يستخدم الربط استدعاءات require_once صريحة، إضافةً إلى التحميل التلقائي PSR-4 من Composer لـNextPDF\Backport\ (القواعد) وNextPDF\Backport\Scripts\ (النصوص البرمجية). جرى التحقق مقابل composer.jsonautoload وعبارات require_once في scripts/build.php.
ترتيب حلّ الإعداد
قسم بعنوان «ترتيب حلّ الإعداد»لا يوجد ملف إعداد. يأتي الإعداد من رايات CLI بعد حلّها مقابل القيم الافتراضية المدمجة في النص البرمجي:
- راية CLI، إن كانت موفّرة.
- القيمة الافتراضية في كتلة تحليل
getopt()(على سبيل المثال، الهدف افتراضيًاphp81، والإصدار افتراضيًا2.0.0). - السلوك الذي يشتقّه المُنشئ من الهدف (PHP 7.4 يفرض النواة فقط ولا Pro، بصرف النظر عن
--no-pro).
جرى التحقق مقابل scripts/build.php (نقطة دخول CLI وBuild::__construct()). تجد المرجع الكامل للرايات في /integrations/backport/configuration/.
التشخيصات
قسم بعنوان «التشخيصات»يوفّر المُنسِّق تشخيصاته الخاصة. شغّل تشغيلًا تجريبيًا (composer build:dry) لطباعة مستودعات المصدر التي ستُقرأ ونيّة كل مرحلة، دون كتابة أي شيء. تطبع كل مرحلة علامة صحٍّ عند النجاح أو إخفاقًا مُسمَّى. لا يوجد أمر فرعي منفصل للتشخيص ولا نقطة دخول bin/. تعمل أداة البناء عبر scripts/build.php أو أسمائها المستعارة لنصوص Composer البرمجية. جرى التحقق مقابل scripts/build.php (step()، وفروع dryRun)، وscripts/merge-sources.php (مسار التشغيل التجريبي في run())، وcomposer.jsonscripts.
انظر أيضًا
قسم بعنوان «انظر أيضًا»- /integrations/backport/overview/ — ما أداة البناء وما الذي تنتجه.
- /integrations/backport/integration/ — عقد تكامل مضيف البناء.
- /integrations/backport/configuration/ — إعدادات Rector ومرجع الرايات.
- /integrations/backport/troubleshooting/ — مرجع الإخفاقات مرحلةً بمرحلة.