Enterprise الإصدار
PHPStan — مرجع متعمّق
نظرة سريعة
قسم بعنوان «نظرة سريعة»- فئة عامة واحدة:
EditionBoundaryRule، وهي قاعدة PHPStan مخصّصة تعمل على جُمَلuse. - تفرض ترتيب اعتماد الإصدارات أحادي الاتجاه. لا يستورد Core مطلقًا Pro أو Enterprise. ولا يستورد Pro مطلقًا Enterprise.
- تُبلِغ المخالفات عن المُعرّف
nextpdf.editionBoundaryViolationفي سطرuseالمخالف. - وقت البناء فقط. لا تملك القاعدة مسارًا في وقت التشغيل ولا تأثيرًا على ملفات PDF المُولَّدة.
- تُشحن ضمن
nextpdf/enterprise. يستخدم التسجيل إعدادات PHPStan القياسية.
التوافر والترخيص
قسم بعنوان «التوافر والترخيص»تُشحن هذه القدرة في NextPDF Enterprise (nextpdf/enterprise) وتُفعَّل عبر مظروف ترخيص من فئة Enterprise. وهي قاعدة تحليل ثابت في وقت البناء بلا مسار في وقت التشغيل: تتحكّم بها حدود حزمة nextpdf/enterprise، ولا تحمل رمز قدرة منفصلًا لكل ميزة. لا يشحن Core ولا Pro ما يعادلها. قارن بين الإصدارات واحصل على ترخيص.
سطح واجهة برمجة التطبيقات العامة
قسم بعنوان «سطح واجهة برمجة التطبيقات العامة»ثبِّت الحزمة، ثم سجِّل القاعدة في إعدادات PHPStan.
composer require nextpdf/enterprise:^3rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule| الرمز | المعاملات | السلوك الافتراضي | القيمة المُعادة | يرمي أو يفشل بـ | ملاحظات |
|---|---|---|---|---|---|
EditionBoundaryRule | لا شيء (لا وسائط للمُنشئ) | قاعدة PHPStan عديمة الحالة مشتركة في جُمَل use | — | لا ترمي أبدًا | final؛ تنفّذ PHPStan\Rules\Rule على Use_ |
EditionBoundaryRule::getNodeType() | لا شيء | تُصرّح بنوع عقدة AST التي تشترك فيها القاعدة | string (Use_::class) | لا ترمي أبدًا | طريقة عقد Rule القياسية في PHPStan |
EditionBoundaryRule::processNode() | Node $node، Scope $scope | تفحص كل رمز مُستورَد مقابل البادئات المحظورة على مساحة الأسماء المُحلَّلة | list<IdentifierRuleError> (فارغة عند الامتثال) | لا ترمي أبدًا؛ تظهر المخالفات كأخطاء قاعدة | مُعرّف الخطأ nextpdf.editionBoundaryViolation |
final class EditionBoundaryRule implements Rule{ public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;}عقد السلوك
قسم بعنوان «عقد السلوك»تنفّذ EditionBoundaryRule عقد Rule القياسي في PHPStan على نوع العقدة Use_. لكل جملة use تقارن مساحة أسماء الملف المُحلَّل مقابل بادئة مساحة أسماء كل رمز مُستورَد، وتفرض ترتيب اعتماد أحادي الاتجاه.
| مساحة الأسماء المُحلَّلة | تسمية الإصدار | بادئات الاستيراد المحظورة |
|---|---|---|
مساحات الأسماء الفرعية NextPDF\*، باستثناء Pro وEnterprise | Core | NextPDF\Pro\، NextPDF\Enterprise\ |
NextPDF\Pro وNextPDF\Pro\* | Pro | NextPDF\Enterprise\ |
NextPDF\Enterprise وNextPDF\Enterprise\* | Enterprise | لا شيء (الفئة العليا) |
أي مساحة أسماء خارج NextPDF\ | — | لا شيء (غير مقيَّدة) |
عندما يتجاوز استيرادٌ الحدود، تُبلِغ القاعدة عن خطأ تحت المُعرّف nextpdf.editionBoundaryViolation، مثبَّتًا على سطر جملة use المخالفة. تذكر الرسالة الرمز المُستورَد، ومساحة الأسماء المُستورِدة، والبادئة المحظورة، وتسميات الإصدارات القابلة للقراءة البشرية. ينتج عن كل رمز مُستورَد خطأ واحد على الأكثر: تتوقف مطابقة البادئة عند أول بادئة محظورة مطابِقة.
الفحص ثابت واستشاري. يُبلِغ عن مخالفات الحدود في جُمَل الاستيراد. لا يُثبِت أن البرنامج المُحلَّل صحيح فيما عدا ذلك.
الحالات الحدّية وأنماط الفشل
قسم بعنوان «الحالات الحدّية وأنماط الفشل»- مساحات الأسماء خارج
NextPDF\والملفات بلا مساحة أسماء لا تنتج أي أخطاء؛ تُعيد القاعدة قائمة فارغة. - الشيفرة المُصرَّح بها في مساحة الأسماء الجذرية تمامًا
NextPDF(بلا مقطع مساحة أسماء فرعية) غير مقيَّدة؛ يطابق كشف الحدود مساحات الأسماء الفرعيةNextPDF\. - لا تُوسَم ملفات Enterprise مطلقًا لاستيرادها رموز Pro أو Core (الفئة العليا، بحكم التصميم).
- مطابقة البادئة تراعي الفاصل. تُصنَّف مساحة أسماء مثل
NextPDF\Professionalعلى أنها Core، لا Pro، ولا تُنتج الاستيرادات تحتها نتيجة إيجابية زائفة مقابل البادئةNextPDF\Pro\. - استيراد الاسمين الحرفيين
NextPDF\ProأوNextPDF\Enterpriseبلا مقطع إضافي لا يُوسَم؛ تُطابَق الرموز الواقعة تحت هاتين البادئتين فقط. - لا تُرشِّح القاعدة حسب نوع الاستيراد: استيرادات class و
functionوconstتحت بادئة محظورة تُبلِغ جميعها. - المراجع المؤهَّلة بالكامل المكتوبة سطريًا بلا جملة
useخارج النطاق. فضِّل الاستيرادات لكي تُفرَض الحدود. - تصريحات
useالمجمَّعة تُحلَّل كنوع العقدة المتمايزGroupUseوتقع خارج اشتراك القاعدة فيUse_؛ الاستيرادات العادية لكل رمز على حدة تُبقي الحدود مفحوصة. processNode()لا ترمي أبدًا؛ تظهر جميع النتائج كأخطاء قاعدة PHPStan أو نتيجة فارغة.- ليست مكوّنًا في وقت التشغيل. لا تُجري أي عمليات تشفيرية، ووضع FIPS غير منطبق.
المطابقة
قسم بعنوان «المطابقة»لا تُدَّعى أي مطابقة للمعايير. هذه قاعدة أدوات مطوّرين تفرض قيدًا معماريًا داخليًا (تطبيق الإصدارات طبقيًا) في عمليات البناء اللاحقة. تنفّذ عقد امتداد قواعد PHPStan، وهو واجهة برمجية لأداة طرف ثالث، لا معيارًا رسميًا. لا تقدّم القاعدة أي ضمان امتثال أو اعتماد أو صحّة بشأن الشيفرة المُحلَّلة؛ تُبلِغ فقط عن مخالفات استيراد حدود الإصدارات وهي استشارية.
ملاحظات التطوير
قسم بعنوان «ملاحظات التطوير»- تُنفَّذ القاعدة داخل PHPStan أثناء التحليل، وتقرأ بنية المصدر فقط، ولا تؤثّر على ملفات PDF المُولَّدة أو أي خدمة منشورة.
- يبقى تسجيل القاعدة واختيار مستوى PHPStan من مسؤولية المُدمِج.
- الفئة
finalوعديمة الحالة، لذا فهي آمنة ضمن عمّال التحليل المتوازي في PHPStan. - مُخرَجات التحليل حتمية لشجرة مصدر معيّنة: تُنتج المدخلات نفسها قائمة الأخطاء نفسها.
- متاحة منذ
nextpdf/enterprise2.1.0؛ يعكس العقد أعلاه 3.1.0.
حدود النشر
قسم بعنوان «حدود النشر»توثّق هذه الصفحة السلوك القابل للرصد خارجيًا وسطح واجهة برمجة التطبيقات العامة المدعوم فقط. مسارات مساحات الأسماء الداخلية، وفئات المساعدة، وجداول الآليات، وأسماء ملفات كتيّب التشغيل، وبادئات التذاكر خارج النطاق.