Source of file DocumentTemplateFactory.php

Size: 0,963 Bytes - Last Modified: 2019-06-27T09:09:04+00:00

/home/vagrant/www/document-templates/src/DocumentTemplates/DocumentTemplateFactory.php

123456789101112131415161718192021222324252627282930313233343536
<?php


namespace BWF\DocumentTemplates\DocumentTemplates;


class DocumentTemplateFactory
{
    /**
     * @param \BWF\DocumentTemplates\DocumentTemplates\DocumentTemplateModelInterface $model
     * @throws \Exception
     *
     * @return \BWF\DocumentTemplates\DocumentTemplates\DocumentTemplateInterface
     */
    public static function build(DocumentTemplateModelInterface $model)
    {
        /** @var DocumentTemplateInterface $instance */
        $instance = null;
        $class = $model->getDocumentClass();

        if (!class_exists($class) || !in_array( DocumentTemplateInterface::class, class_implements($class))) {
            throw new \Exception(
                sprintf('Document class: "%s" must implement "%s"',
                    $class,
                    DocumentTemplateInterface::class
                )
            );
        }

        $instance = new $class();
        $instance->init($model);

        return $instance;
    }

}