Code Inspection: Possible polymorphic call
Reports polymorphic code usages. Such usages are ambiguous and can be potentially inoperable depending on the class instance passed as the argument.
In the following example, the $property
property is only defined in ChildClass
but not in ParentClass
. As a result, the getProperty()
function call is operable when a ChildClass
instance is passed as an argument, but inoperable when a ParentClass
instance is passed.
class ParentClass {}
class ChildClass extends ParentClass {
public $property = 1;
}
function getProperty(ParentClass $a) {
echo $a->property;
}
getProperty(new ChildClass()); //will work, since $property is defined in Child
getProperty(new ParentClass()); //won't work, since $property is not defined in Parent
Suppress an inspection in the editor
Position the caret at the highlighted line and press Alt+Enter or click .
Click the arrow next to the inspection you want to suppress and select the necessary suppress action.
Last modified: 16 May 2022