| Conditions | 5 | 
| Paths | 9 | 
| Total Lines | 15 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 0 | ||
| 1 | <?php  | 
            ||
| 16 | 	public function setExpectedException( $name, $message = '', $code = null ) { | 
            ||
| 17 | 		if ( is_callable( [ $this, 'expectException' ] ) ) { | 
            ||
| 18 | 			if ( $name !== null ) { | 
            ||
| 19 | $this->expectException( $name );  | 
            ||
| 
                                                                                                    
                        
                         | 
                |||
| 20 | }  | 
            ||
| 21 | 			if ( $message !== '' ) { | 
            ||
| 22 | $this->expectExceptionMessage( $message );  | 
            ||
| 23 | }  | 
            ||
| 24 | 			if ( $code !== null ) { | 
            ||
| 25 | $this->expectExceptionCode( $code );  | 
            ||
| 26 | }  | 
            ||
| 27 | 		} else { | 
            ||
| 28 | parent::setExpectedException( $name, $message, $code );  | 
            ||
| 29 | }  | 
            ||
| 30 | }  | 
            ||
| 31 | }  | 
            
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.