Files
DesignPatternsPHP/Creational/StaticFactory/StaticFactory.php
2019-08-17 21:58:04 +02:00

28 lines
679 B
PHP

<?php
declare(strict_types=1);
namespace DesignPatterns\Creational\StaticFactory;
/**
* 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
{
/**
* @param string $type
*
* @return Formatter
*/
public static function factory(string $type): Formatter
{
if ($type == 'number') {
return new FormatNumber();
} elseif ($type == 'string') {
return new FormatString();
}
throw new \InvalidArgumentException('Unknown format given');
}
}