for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace TextFile\Factory;
use TextFile\Exception\InvalidWriterException;
use TextFile\Writer\WriterInterface;
/**
* Class WriterFactory
*
* @package TextFile\Factory
*/
class WriterFactory
{
* @var WriterInterface[]
protected $writers = [];
* @param string $writerClass
* @return WriterInterface
* @throws InvalidWriterException
public function createWriter($writerClass)
if (isset($this->writers[$writerClass])) {
return $this->writers[$writerClass];
}
if (!isset(class_implements($writerClass)[WriterInterface::class])) {
throw new InvalidWriterException();
$this->addWriter($writerClass);
protected function addWriter($writerClass)
$this->writers[$writerClass] = new $writerClass;