StrReplaceByVariables.php 982 Bytes
<?php

namespace App\Service;

use App\Models\Pivots\DictionaryCampaign;
use App\Models\Variable;

class StrReplaceByVariables
{

    private $delimer = '%';
    private $str;
    private $list;

    /**
     * @param string $str
     * @param array|DictionaryCampaign $list
     */
    public function __construct($str, $list)
    {
        if ($list instanceof DictionaryCampaign) {
            $dictionaryCampaign = $list;
            $list = Variable::getListVariablesByDictionaryCampaign($dictionaryCampaign);
        }
        foreach ($list as $key => $variable) {
            $list["{$this->delimer}{$key}{$this->delimer}"] = $variable;
            unset($list[$key]);
        }

        $this->str = $str;
        $this->list = $list;
    }

    static public function getInstance($str, $list)
    {
        return new static($str, $list);
    }

    /**
     * @return string
     */
    public function get()
    {
        return strtr($this->str, $this->list);
    }

}