Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu tenho um método static que faz a busca por um identificador numa string {$string} e faz a substituição pelos valores armazenados no for {$for}.
Essa $string é um modelo de e-mail. Um campo na tabela que já vem com escritas padrões.
$string = 'Olá {$cliente_nome} seu {$pedido_numero} seja em vindo, hoje é {$pedido_data}'; //Só um exemplo
O for vem de uma execução em qualquer tabela: por exemplo tabela Pedidos
foreach($resultado as $for):
endforeach;
E nessa mesma tabela Pedidos eu uso identificadores de outras Tabelas que precisam se manter.
Por exemplo cliente_id - produto_id que armazena o Id correspondente do cliente/produto e utilizo para identificar os dados do mesmo.
Então esse método:
public static function VarDinamica($string, $for) { // A $string está lá em cima e a $for vem depois armazenando os valores
self::$Data = (string) $string;
/* Captura o que deve ser alterado {$ } */
self::$Format = preg_match_all("/([{])([$])([^}]+)/", self::$Data, $Result);
/* Limpa os campos identificados */
self::$Data = str_replace(array('{$, '}'), ' ', self::$Data);
/* Faz a substituição de {$keys} para {$values} */
foreach ($Result[3] as $ret):
self::$Data = str_replace($ret, $for->$ret, self::$Data);
endforeach;
/* Inverte da data para padrão BR */
if (preg_match('/([0-9]{4})-([0-9]{2})-([0-9]{2})/', self::$Data)):
self::$Data = preg_replace('/([0-9]{4})-([0-9]{2})-([0-9]{2})/', '$3/$2/$1', self::$Data);
endif;
return self::$Data;
}
A questão é: eu tenho na {$string} valores que não tem na tabela Pedidos
$string = 'Olá {$cliente_nome} seu {$pedido_numero} seja em vindo, hoje é {$pedido_data}';
Esse é o X da questão
Eu tenho cliente_id e não cliente_nome e os outros dados referentes ao Cliente, que precisam ser pegos da tabela Clientes (pelo fato de que se alterados, por exemplo um email {$cliente_email} um endereço {$cliente_endereco}, um telefone {$cliente_telefone}) sempre estarão atualizados.
Como posso fazer isso, ou se existe uma outra maneira de se chegar ao resultado esperado.
Carregando comentários...