Вход Регистрация
Файл: vendor/phpunit/php-text-template/src/Template.php
Строк: 86
<?php declare(strict_types=1);
/*
 * This file is part of phpunit/php-text-template.
 *
 * (c) Sebastian Bergmann <sebastian@phpunit.de>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace SebastianBergmannTemplate;

use function 
array_merge;
use function 
file_exists;
use function 
file_get_contents;
use function 
file_put_contents;
use function 
sprintf;
use function 
str_replace;

final class 
Template
{
    
/**
     * @var string
     */
    
private $template '';

    
/**
     * @var string
     */
    
private $openDelimiter;

    
/**
     * @var string
     */
    
private $closeDelimiter;

    
/**
     * @var array
     */
    
private $values = [];

    
/**
     * @throws InvalidArgumentException
     */
    
public function __construct(string $file ''string $openDelimiter '{'string $closeDelimiter '}')
    {
        
$this->setFile($file);

        
$this->openDelimiter  $openDelimiter;
        
$this->closeDelimiter $closeDelimiter;
    }

    
/**
     * @throws InvalidArgumentException
     */
    
public function setFile(string $file): void
    
{
        
$distFile $file '.dist';

        if (
file_exists($file)) {
            
$this->template file_get_contents($file);
        } elseif (
file_exists($distFile)) {
            
$this->template file_get_contents($distFile);
        } else {
            throw new 
InvalidArgumentException(
                
sprintf(
                    
'Failed to load template "%s"',
                    
$file
                
)
            );
        }
    }

    public function 
setVar(array $valuesbool $merge true): void
    
{
        if (!
$merge || empty($this->values)) {
            
$this->values $values;
        } else {
            
$this->values array_merge($this->values$values);
        }
    }

    public function 
render(): string
    
{
        
$keys = [];

        foreach (
$this->values as $key => $value) {
            
$keys[] = $this->openDelimiter $key $this->closeDelimiter;
        }

        return 
str_replace($keys$this->values$this->template);
    }

    
/**
     * @codeCoverageIgnore
     */
    
public function renderTo(string $target): void
    
{
        if (!
file_put_contents($target$this->render())) {
            throw new 
RuntimeException(
                
sprintf(
                    
'Writing rendered result to "%s" failed',
                    
$target
                
)
            );
        }
    }
}
Онлайн: 0
Реклама