StrReplaceByVariables.php 951 Bytes
<?php

namespace App\Service;

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

class StrReplaceByVariables
{

    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->getKey());
        }

        foreach ($list['vars'] as $key => $var) {
            $list['vars'][$key] = "/\b{$var}\b/";
        }

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

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

    /**
     * @return string
     */
    public function get()
    {
        return preg_replace($this->list['vars'], $this->list['values'], $this->str);
    }

}