Conditions | 3 |
Paths | 3 |
Total Lines | 16 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
1 | <?php |
||
19 | protected function forwardCallTo($object, $method, $parameters) |
||
20 | { |
||
21 | if ($this->isCheckScopeMethod($method)) { |
||
22 | $originalScopeMethodName = $this->getOriginalScopeMethodName($method); |
||
23 | |||
24 | if (method_exists($this, "scope{$originalScopeMethodName}")) { |
||
25 | $builder = $this->newQuery()->where($this->getKeyName(), $this->getKey()); |
||
26 | |||
27 | $builder = call_user_func_array([$builder, $originalScopeMethodName], $parameters); |
||
28 | |||
29 | return $builder->exists(); |
||
30 | } |
||
31 | } |
||
32 | |||
33 | return parent::forwardCallTo($object, $method, $parameters); |
||
34 | } |
||
35 | } |
||
36 |
This check looks for methods that are used by a trait but not required by it.
To illustrate, let’s look at the following code example
The trait
Idable
provides a methodequalsId
that in turn relies on the methodgetId()
. If this method does not exist on a class mixing in this trait, the method will fail.Adding the
getId()
as an abstract method to the trait will make sure it is available.