<?php
final class Contains
{
/**
* @var string
*/
private $comparedValue;
/**
* Creates the expression.
*
* @param string $comparedValue The compared value.
*/
public function __construct($comparedValue)
{
$this->comparedValue = $comparedValue;
}
/**
* Returns the accepted suffix.
*
* @return string The accepted suffix.
*/
public function getComparedValue()
{
return $this->comparedValue;
}
public function equivalentTo(Expression $other)
{
// Since this class is final, we can check with instanceof
return $other instanceof $this && $this->comparedValue == $other->comparedValue;
}
}
$a = new Contains('foobar');
$b = new Contains(0);
var_dump($a->equivalentTo($b));
Fatal error: Uncaught TypeError: Contains::equivalentTo(): Argument #1 ($other) must be of type Expression, Contains given, called in /in/GeKPX on line 39 and defined in /in/GeKPX:28
Stack trace:
#0 /in/GeKPX(39): Contains->equivalentTo(Object(Contains))
#1 {main}
thrown in /in/GeKPX on line 28
Process exited with code 255.
Fatal error: Uncaught TypeError: Argument 1 passed to Contains::equivalentTo() must be an instance of Expression, instance of Contains given, called in /in/GeKPX on line 39 and defined in /in/GeKPX:28
Stack trace:
#0 /in/GeKPX(39): Contains->equivalentTo(Object(Contains))
#1 {main}
thrown in /in/GeKPX on line 28
Process exited with code 255.
Catchable fatal error: Argument 1 passed to Contains::equivalentTo() must be an instance of Expression, instance of Contains given, called in /in/GeKPX on line 39 and defined in /in/GeKPX on line 28
Process exited with code 255.