1.2.801. No Direct Call To Magic Method¶
PHP features magic methods, which are methods related to operators.
Magic methods, such as __get(), related to =, or __clone(), related to clone
, are supposed to be used in an object environment, and not with direct call.
It is recommended to use the magic method with its intended usage, and not to call it directly. For example, typecast to string
instead of calling the __toString() method.
Accessing those methods in a static way is also discouraged.
<?php
// Write
print $x->a;
// instead of
print $x->__get('a');
class Foo {
private $b = "secret";
public function __toString() {
return strtoupper($this->b);
}
}
$bar = new Foo();
echo (string) $bar;
?>
See also Magical PHP: __call.
1.2.801.1. Specs¶
Short name |
Classes/DirectCallToMagicMethod |
Rulesets |
|
Exakat since |
0.8.4 |
PHP Version |
All |
Severity |
Major |
Time To Fix |
Quick (30 mins) |
Precision |
Very high |
Available in |