يركز Phpstan على العثور على الأخطاء في الكود الخاص بك. ولكن في PHP ، هناك الكثير من الفسحة في كيفية كتابة الأشياء. يحتوي هذا المستودع على قواعد إضافية تدور حول الكود المكتوب بدقة وقوية دون أي صب فضفاض لأولئك الذين يريدون سلامة إضافية في البرمجة الدفاعية للغاية:
if ، elseif ، المشغل الثلاثية ، بعد ! وعلى جانبي && و || .+ والمعاملات الرقمية في - / * / / / ** / % .$var++ ، $var-- ، ++$var --$var .$strict لتحسين السلامة من النوع ، يجب ضبطها على true :in_array (المعلمة الثالثة)array_search (المعلمة الثالثة)array_keys (المعلمة الثالثة ؛ فقط إذا تم توفير المعلمة 2nd $search_value )base64_decode (المعلمة الثانية)while حلقة الحلقة for الأولي للحلقة بعد الحلقة.switch وقيمة case . يقارنها PHP بشكل فضفاض بشكل افتراضي ويمكن أن يؤدي ذلك إلى نتائج غير متوقعة.empty() - إنها مقارنة فضفاضة للغاية (انظر اليدوي) ، يوصى باستخدامها بشكل أكثر صرامة.?: :) - يعني مقارنة ضعيفة ، يوصى باستخدام مشغل COALESCE NULL ( ?? ) أو عامل ثلاثي مع حالة صارمة.$$foo ، $this->$method() etc.)instanceof حقيقيًا ، وظائف فحص النوع is_* والمقارنات الصارمة === / !== . يمكن إيقاف تشغيل هذه الشيكات عن طريق تعيين checkAlwaysTrueInstanceof / checkAlwaysTrueCheckTypeFunctionCall / checkAlwaysTrueStrictComparison إلى False.$ls = `ls -la` )$this مباشرة بدلاً من استخدام $this المتغير بشكل غير مباشرقواعد إضافية تأتي في الإصدارات اللاحقة!
لاستخدام هذا الامتداد ، اطلبه في الملحن:
composer require --dev phpstan/phpstan-strict-rules
إذا قمت أيضًا بتثبيت Phpstan/Extension-instholer ، فأنت جميعًا قد تم تعيينه!
إذا كنت لا ترغب في استخدام phpstan/extension-installer ، فقم بتضمين القواعد. neon في تكوين Phpstan لمشروعك:
includes:
- vendor/phpstan/phpstan-strict-rules/rules.neon
يمكنك تعطيل القواعد باستخدام معلمات التكوين:
parameters :
strictRules :
disallowedLooseComparison : false
booleansInConditions : false
uselessCast : false
requireParentConstructorCall : false
disallowedBacktick : false
disallowedEmpty : false
disallowedImplicitArrayCreation : false
disallowedShortTernary : false
overwriteVariablesWithLoop : false
closureUsesThis : false
matchingInheritedMethodNames : false
numericOperandsInArithmeticOperators : false
strictFunctionCalls : false
dynamicCallOnStaticMethod : false
switchConditionsMatchingType : false
noVariableVariables : false
strictArrayFilter : false
illegalConstructorMethodCall : falseبصرف النظر عن تقديم قواعد مخصصة جديدة ، فإن قواعد Phpstan-Strict أيضًا تغير القيم الافتراضية لبعض معلمات التكوين الموجودة في Phpstan نفسها. تم توثيق هذه المعلمات على phpstan.org.
إذا كنت لا ترغب في البدء في استخدام جميع القواعد الصارمة المتاحة في وقت واحد ولكن واحد أو اثنتين فقط ، يمكنك!
يمكنك تعطيل جميع القواعد من rules.neon المضمنة. neon مع:
parameters :
strictRules :
allRules : falseثم يمكنك إعادة تمكين القواعد الفردية مع معلمات التكوين:
parameters :
strictRules :
allRules : false
booleansInConditions : true حتى مع strictRules.allRules تم ضبطها على false ، جزء من هذه الحزمة لا يزال ساري المفعول. ذلك لأن قواعد phpstan-strict أيضًا تغير القيم الافتراضية لبعض معلمات التكوين الموجودة في Phpstan نفسها. تم توثيق هذه المعلمات على phpstan.org.