Phpstan berfokus pada menemukan bug di kode Anda. Tetapi dalam PHP ada banyak kelonggaran dalam bagaimana barang dapat ditulis. Repositori ini berisi aturan tambahan yang berputar di sekitar kode yang diketik secara ketat dan kuat tanpa casting longgar bagi mereka yang menginginkan keamanan tambahan dalam pemrograman yang sangat defensif:
if , elseif , operator ternary, setelah ! , dan di kedua sisi && dan || .+ dan operan numerik di - / * / / / ** / % .$var++ , $var-- , ++$var dan- --$var .$strict untuk keselamatan tipe yang lebih baik, harus diatur ke true :in_array (parameter ke -3)array_search (parameter ke -3)array_keys (parameter ke -3; hanya jika parameter ke -2 $search_value disediakan)base64_decode (parameter ke -2)while loop dan for penugasan awal loop tidak dapat digunakan setelah loop.switch dan nilai case harus cocok. PHP membandingkannya secara longgar secara default dan itu dapat menyebabkan hasil yang tidak terduga.empty() - Ini perbandingan yang sangat longgar (lihat manual), disarankan untuk menggunakan yang lebih ketat.?: :) - menyiratkan perbandingan yang lemah, disarankan untuk menggunakan operator null coalesce ( ?? ) atau operator terner dengan kondisi ketat.$$foo , $this->$method() dll.)instanceof function is_* Tipe dan perbandingan ketat === / !== . Cek ini dapat dimatikan dengan mengatur checkAlwaysTrueInstanceof dari / checkAlwaysTrueCheckTypeFunctionCall / checkAlwaysTrueStrictComparison menjadi false.$ls = `ls -la` )$this secara langsung alih -alih menggunakan $this secara tidak langsungAturan tambahan akan datang dalam rilis berikutnya!
Untuk menggunakan ekstensi ini, memerlukannya di komposer:
composer require --dev phpstan/phpstan-strict-rules
Jika Anda juga menginstal phpstan/extension-installer maka Anda sudah siap!
Jika Anda tidak ingin menggunakan phpstan/extension-installer , sertakan aturan.neon dalam konfigurasi phpstan proyek Anda:
includes:
- vendor/phpstan/phpstan-strict-rules/rules.neon
Anda dapat menonaktifkan aturan menggunakan parameter konfigurasi:
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 : falseSelain memperkenalkan aturan kustom baru, phpstan-strict-rules juga mengubah nilai default dari beberapa parameter konfigurasi yang ada di phpstan itu sendiri. Parameter ini didokumentasikan di phpstan.org.
Jika Anda tidak ingin mulai menggunakan semua aturan ketat yang tersedia sekaligus tetapi hanya satu atau dua, Anda bisa!
Anda dapat menonaktifkan semua aturan dari rules.neon yang disertakan. Neon dengan:
parameters :
strictRules :
allRules : falseMaka Anda dapat mengaktifkan kembali aturan individu dengan parameter konfigurasi:
parameters :
strictRules :
allRules : false
booleansInConditions : true Bahkan dengan strictRules.allRules diatur ke false , bagian dari paket ini masih berlaku. Itu karena phpstan-strict-rules juga mengubah nilai default dari beberapa parameter konfigurasi yang ada di phpstan itu sendiri. Parameter ini didokumentasikan di phpstan.org.