Source of file TemplateDataSourceFactory.php

Size: 1,070 Bytes - Last Modified: 2019-06-27T09:09:04+00:00

/home/vagrant/www/document-templates/src/TemplateDataSources/TemplateDataSourceFactory.php

123456789101112131415161718192021222324252627282930313233343536373839404142
<?php


namespace BWF\DocumentTemplates\TemplateDataSources;


class TemplateDataSourceFactory
{
    /**
     * @param array|object $data
     * @param string $name
     * @return TemplateDataSource
     */
    public static function build($data, $name = ''){
        $templateDataSource = $data;
        $buildRequired = false;

        if(is_array($data)){
            $buildRequired = true;
        }
        else if(is_object($data)) {
            $reflexionData = new \ReflectionObject($data);
            if(!$reflexionData->implementsInterface(TemplateDataSourceInterface::class)){
                $buildRequired = true;
            }
            else{
                $data->setNamespace($name);
            }
        }

        if($buildRequired){
            if($data instanceof \IteratorAggregate){
                $templateDataSource = new IterableTemplateDataSource($data, $name);
            }
            else{
                $templateDataSource = new TemplateDataSource($data, $name);
            }
        }

        return $templateDataSource;
    }
}