لاستخدام هذا الامتداد ، اطلبه في الملحن:
composer require --dev phpstan/phpstan-deprecation-rules
إذا قمت أيضًا بتثبيت Phpstan/Extension-instholer ، فأنت جميعًا قد تم تعيينه!
إذا كنت لا ترغب في استخدام phpstan/extension-installer ، فقم بتضمين القواعد. neon في تكوين Phpstan لمشروعك:
includes:
- vendor/phpstan/phpstan-deprecation-rules/rules.neon
هذا الامتداد ينبعث من تحذيرات إهمال على الكود ، والذي يستخدم الخصائص/الوظائف/الأساليب/الفئات التي يتم شرحها على أنها @deprecated .
في حالة عدم امتلاك الرمز الذي تريد اعتباره مستهجنًا ، استخدم ملفات Phpstan Stub لإعلان انخفاضات في ملفات البائعين مثل:
/** @deprecated */
class ThirdPartyClass {}
لم يتم الإبلاغ عن استخدام التعليمات البرمجية المهملة في الكود الذي تم إهماله أيضًا:
/** @deprecated */
function doFoo (): void
{
// not reported:
anotherDeprecatedFunction ();
} إذا كان لديك طريقة مختلفة لتمييز الكود الذي يستدعي الرموز التي تم إهمالها عن قصد ولا تريد الإبلاغ عن هذه المكالمات أيضًا ، فيمكنك كتابة امتداد عن طريق تنفيذ واجهة DeprecatedScopeResolver .
على سبيل المثال ، إذا قمت بتصميم اختبارات phpunit الخاصة بك التي تختبر الكود الذي تم إهماله باستخدام @group legacy ، فيمكنك تنفيذ الامتداد بهذه الطريقة:
class GroupLegacyScopeResolver implements DeprecatedScopeResolver
{
public function isScopeDeprecated ( Scope $ scope ): bool
{
$ function = $ scope -> getFunction ();
return $ function !== null
&& $ function -> getDocComment () !== null
&& strpos ( $ function -> getDocComment (), ' @group legacy ' ) !== false ;
}
}وتسجيله في ملف التكوين الخاص بك:
services :
-
class : GroupLegacyScopeResolver
tags :
- phpstan.deprecations.deprecatedScopeResolverتعرف على المزيد حول SCOPE ، وهو مفهوم أساسي لتنفيذ امتدادات PHPSTAN المخصصة.