Files
DesignPatternsPHP/Creational/StaticFactory/StaticFactory.php
Atakan Demircioğlu 719593cedc StaticFactory :: lint
2022-07-19 09:01:15 +03:00

24 lines
619 B
PHP

<?php
declare(strict_types=1);
namespace DesignPatterns\Creational\StaticFactory;
use InvalidArgumentException;
/**
* Note1: Remember, static means global state which is evil because it can't be mocked for tests
* Note2: Cannot be subclassed or mock-upped or have multiple different instances.
*/
final class StaticFactory
{
public static function factory(string $type): Formatter
{
return match ($type) {
'number' => new FormatNumber(),
'string' => new FormatString(),
default => throw new InvalidArgumentException('Unknown format given'),
};
}
}