| Conditions | 3 | 
| Paths | 3 | 
| Total Lines | 18 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 0 | ||
| 1 | <?php | ||
| 24 | protected function validateSignature(): void | ||
| 25 |     { | ||
| 26 | $data = $dataSignature = $this->getData(); | ||
|  | |||
| 27 | |||
| 28 |         if (! isset($data['signature'])) { | ||
| 29 |             throw new InvalidResponseException(sprintf('Response from VTCPay is invalid!')); | ||
| 30 | } | ||
| 31 | |||
| 32 | $signature = new Signature( | ||
| 33 | $this->getRequest()->getSecurityCode() | ||
| 34 | ); | ||
| 35 | |||
| 36 | unset($dataSignature['signature']); | ||
| 37 | |||
| 38 |         if (! $signature->validate($dataSignature, $data['signature'])) { | ||
| 39 |             throw new InvalidResponseException(sprintf('Data signature response from VTCPay is invalid!')); | ||
| 40 | } | ||
| 41 | } | ||
| 42 | } | ||
| 43 | 
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
Idableprovides a methodequalsIdthat 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.