.. _ruleset-class-review: Class Review ++++++++++++ This ruleset focuses on classes construction issues, and their related structures : traits, interfaces, methods, properties, constants. Total : 100 analysis * :ref:`final-class-usage` * :ref:`final-methods-usage` * :ref:`classes-mutually-extending-each-other` * :ref:`could-use-self` * :ref:`constant-class` * :ref:`redefined-property` * :ref:`useless-interfaces` * :ref:`could-be-class-constant` * :ref:`could-be-a-static-variable` * :ref:`no-self-referencing-constant` * :ref:`property-could-be-private` * :ref:`redefined-methods` * :ref:`class-should-be-final-by-ocramius` * :ref:`could-be-protected-property` * :ref:`raised-access-level` * :ref:`could-be-private-class-constant` * :ref:`could-be-protected-class-constant` * :ref:`method-could-be-private-method` * :ref:`could-be-protected-method` * :ref:`property-could-be-local` * :ref:`could-be-abstract-class` * :ref:`class-could-be-final` * :ref:`wrong-access-style-to-property` * :ref:`unreachable-class-constant` * :ref:`avoid-self-in-interface` * :ref:`self-using-trait` * :ref:`method-could-be-static` * :ref:`avoid-option-arrays-in-constructors` * :ref:`memoize-magiccall` * :ref:`unused-class-constant` * :ref:`dependant-abstract-classes` * :ref:`wrong-type-returned` * :ref:`disconnected-classes` * :ref:`class-without-parent` * :ref:`interfaces-is-not-implemented` * :ref:`interfaces-don't-ensure-properties` * :ref:`non-nullable-getters` * :ref:`insufficient-property-typehint` * :ref:`exceeding-typehint` * :ref:`nullable-without-check` * :ref:`fossilized-method` * :ref:`uninitialized-property` * :ref:`wrong-typed-property-default` * :ref:`implicit-nullable-type` * :ref:`missing-abstract-method` * :ref:`unused-trait-in-class` * :ref:`cyclic-references` * :ref:`double-object-assignation` * :ref:`mismatch-properties-typehints` * :ref:`different-argument-counts` * :ref:`could-be-parent-method` * :ref:`cancel-common-method` * :ref:`modified-typed-parameter` * :ref:`useless-typehint` * :ref:`could-be-stringable` * :ref:`final-private-methods` * :ref:`missing-\_\_isset()-method` * :ref:`no-static-variable-in-a-method` * :ref:`inherited-property-type-must-match` * :ref:`abstract-class-constants` * :ref:`missing-visibility` * :ref:`unreachable-method` * :ref:`undefined-methods` * :ref:`unfinished-object` * :ref:`undefined-enumcase` * :ref:`can't-overwrite-final-constant` * :ref:`no-constructor-in-interface` * :ref:`lowered-access-level` * :ref:`used-once-trait` * :ref:`parent-is-not-static` * :ref:`no-magic-method-for-enum` * :ref:`no-readonly-assignation-in-global` * :ref:`could-set-property-default` * :ref:`wrong-type-with-default` * :ref:`same-name-for-property-and-method` * :ref:`magic-method-returntype-is-restricted` * :ref:`could-inject-parameter` * :ref:`set-chaining-exception` * :ref:`useless-assignation-of-promoted-property` * :ref:`type-dodging` * :ref:`class-could-be-readonly` * :ref:`class-invasion` * :ref:`property-invasion` * :ref:`different-constructors` * :ref:`sidelined-method` * :ref:`rewrote-final-class-constant` * :ref:`useless-constant-overwrite` * :ref:`incompatible-property-between-class-and-trait` * :ref:`static-call-with-self` * :ref:`property-cannot-be-readonly` * :ref:`static-methods-cannot-call-non-static-methods` * :ref:`untyped-no-default-properties` * :ref:`trait-is-not-a-type` * :ref:`cant-instantiate-non-class` * :ref:`multiple-property-declaration` * :ref:`no-null-with-null-safe-operator` * :ref:`could-be-readonly-property` * :ref:`new-object-then-immediate-call` * :ref:`property-export` * :ref:`useless-nullsafe-operator` Specs _____ +--------------+-------------------------------------------------------------------------------------------------------------------------+ | Short name | ClassReview | +--------------+-------------------------------------------------------------------------------------------------------------------------+ | Available in | `Entreprise Edition `_, `Exakat Cloud `_ | +--------------+-------------------------------------------------------------------------------------------------------------------------+