for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Phpml\Strategy\Compare;
use Phpml\Exception\InvalidArgumentException;
class CompareStrategyFactory
{
/**
* @param string $operator
*
* @return CompareStrategy
* @throws InvalidArgumentException
*/
public static function create(string $operator): CompareStrategy
switch ($operator) {
case '>':
return new GreaterThan();
case '>=':
return new GreaterThanOrEqual();
case '=':
case '==':
return new EqualTo();
case '===':
return new IdenticalTo();
case '<=':
return new LessThanOrEqual();
case '<':
return new LessThan();
case '!=':
case '<>':
return new NotEqualTo();
case '!==':
return new NotIdenticalTo();
default:
throw InvalidArgumentException::invalidOperator($operator);
}