Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal!
Descrição:
Tenho um arquivo com constantes, edtável pelo navegador, uma delas [ OS_ImpressaoSaida_Termo ] deve gravar valor parecido com esse:
>
Eu ".$Cliente[Nome]." declaro ter recebido o veículo acima descriminando de ".SIS_Cliente." nesta data e dou plena e total quitação dos serviços executados assinando abaixo.
Observem que há uma variavel de um array e outra constante no texto.
Problema:
Aqui, onde vou precisar dessa constante:
<?php
// TERMO
If (OS_ImpressaoSaida_Termo !== '')
{ ?>
<tr class="Form_Titulo">
<td class="Form_Titulo_Cel" colspan="2">Termo de Saída</td>
</tr>
<tr class="Form_Linha"><td class="Form_Linha_Cel" colspan="2"><div style="font-size:9px; text-align:justify;"><?= OS_ImpressaoSaida_Termo.( OS_ImpressaoSaida_TermoAssinatura === True ? '<div class="Texto" style="text-align:center;"><br>______________________________________________________<br>'.$Cliente['Tratamento'].'<br>'.$Cliente_Doc.'</div>' : '' ); ?></div></td></tr>
<? } ?>
Preciso que ela seja interpretada como se eu tivesse escrito o código na página:
Echo OS_ImpressaoSaida_Termo === Echo "Eu ".$Cliente[Nome]." declaro ... ".SIS_Cliente." ... "
Há alguma forma de fazer isso?
Não sei se me expressei bem, mas tentei ao máximo, rs.
Outra página. O arquivo é incluido.
Tentei, sem sucesso:
<?
$Termo = OS_ImpressaoSaida_Termo;
Echo "{$Termo}"; ?>Tente Assim
class clientes{
const ClienteNome = 'Andrey';
}
$a = new clientes;
echo constant('clientes::ClienteNome').'<br />';
var_dump(constant('clientes::ClienteNome'));
Meu Output foi:
Andrey
string(6) "Andrey"
Nada. :(
O problema é que dentro da constane há variavés php, exemplo:
define('X', 'Cliente $Cliente');
Claro que a var $Cliente existe na pagina onde preciso usar o valor da constante, na prática preciso que o php interprete o valor da constante como se eu desse um:
Echo "Cliente $Cliente";
Qual o Erro ??
Exemplo Do Site Do Php
<?php
interface bar {
const test = 'foobar!';
} const test = 'foobar!';
}
$const = 'test';
var_dump(constant('bar::'. $const));
var_dump(constant('foo::'. $const));
?>Não há erro.
agora entendi , a variavel $cliente fica armazenada dentro da constante junto a string 'Cliente'
voce quer que imprima na pagina que vai exibir a constante
Cliente $cliente ?
Isso!
Ao usar [ Echo X; ] deve imprmir "Cliente Fernando" como se eu declarasse literalmente [ Echo "Cliente $Cliente"; ]
Bem , eu acho que isso não tem como não .. fiz um teste aqui assim .. tentei retorno com funçao propia tambem não deu
$dados = 'Cliente';
class teste{
const Cliente = 'Cliente $dados';
}
echo constant('teste::Cliente');
saida:
Cliente $dados
:(
Também acho que nao vai ter jeito.
Fiz uma gambiarra que resolve temporariamente o problema para esta duas variaveis de que preciso, contudo, ainda preciso saber se ha alguma forma de fazer o proposto pois pode aparecer a necessidade de incluir outras variaveis php na constante e desta, além de modificar a constante tenho de modificar a pagina.
define('OS_ImpressaoSaida_Termo', 'Eu $_Cliente$ declaro ter recebido o veículo acima descriminando de $_Sistema$ nesta data e dou plena e total quitação dos serviços executados assinando abaixo.');
// TERMO
If (OS_ImpressaoSaida_Termo !== '')
{ $Termos = explode('$', OS_ImpressaoSaida_Termo);
Foreach($Termos as $Valor)
{ If (substr($Valor, 0, 1) == '_')
{ $TMP = substr($Valor, 1);
Switch($TMP)
{ Case 'Cliente':
$Termo .= $Cliente['Tratamento'];
Break;
Case 'Sistema':
$Termo .= SIS_Cliente;
Break;
}
}
Else { $Termo .= $Valor; }
}se a variavel você ta pegando de outra classe , ou seja 'constante com a variavel'
faz uma funçao pra retornar o nome do cliente
public function cliente(){
return $cliente
}
no caso $cliente , poderia ser uma variavel armazenando um resultado vindo do banco ..
Os dados que preciso usar, as variaveis, ja estao disponiveis na pagina principal vindas do db.
O problema é realmente interpretar o valor da constante como código php e nao como uma string.
certo , mais pra que armazenar um valor definido pra tal variavel em outra pagina , e chamar essa variavel de outra ?
Se puder ver como funciona:
http://demo.ipis.net.br/germec
No menu Configurações -> Módulos: é possível editar o valor da constante: campo $ImpressaoSaida_Termo
No menu Ordens de Serviço, na lita da index, o segundo botão de impressaõ gera um registro de saida e la em baixo (em Termo de Saída) está o valor da constante.
Pra entrar:
Usuário demo4
Senha: demo4
Ops! Este link parece estar corrompido.
;)
Corrigido! Desculpe.
Login & Senha :D
Ta no post com o link, rs.
Viu ai? A cfg pode ser editada (o arquivo é recriado com os novos valores apos a edicao e submit do form, este mesmo é Incluido na pagina onde preciso interpretar e imprimir a constante) e pretendo dar a possibilidade ao usuario de incluir outras informações, através de variavéis, no termo de saida, por isso preciso automatizar esta leitura e interpretação do valor da constante como código.
Olha, a melhor opção para mim é utilizar printf.
<?php
define ( 'TESTE', 'Eu %s declaro ter recebido o veículo acima descriminando de %s nesta data e dou plena e total quitação dos serviços executados assinando abaixo.' );
$nome = 'Nome do cliente';
$cliente = 'Nome da Empresa';
printf ( TESTE, $nome, $cliente);
Carlos Eduardo
Mas neste código já postado, o retorno foi "Cliente $dados" porquê a String está em Aspas Simples.
$dados = 'Cliente';
class teste{
const Cliente = 'Cliente $dados';
}
echo constant('teste::Cliente');
Se você fizer:
$dados = "Cliente 2";
const Cliente = "Cliente $dados";
O retorno vai ser "Cliente Cliente 2".
Parse error: syntax error, unexpected '"'
^_^
não tem como armazenar uma variavel dentro de uma constante ..
o melhor a se fazer foi oque o matias disse mesmo ... printf
Haa entendi!
=D
>
Olha, a melhor opção para mim é utilizar printf.
<?php
define ( 'TESTE', 'Eu %s declaro ter recebido o veículo acima descriminando de %s nesta data e dou plena e total quitação dos serviços executados assinando abaixo.' );
$nome = 'Nome do cliente';
$cliente = 'Nome da Empresa';
printf ( TESTE, $nome, $cliente);
Carlos Eduardo
Beleza @Matias Rezende! Show. Esta parace ser a solução mais viavel, estudei printf() e sprintf(). Estou bolando uma forma de identificar cada variavel dentro da string.
>
Parse error: syntax error, unexpected '"'
^_^
não tem como armazenar uma variavel dentro de uma constante ..
o melhor a se fazer foi oque o matias disse mesmo ... printf
E isso ai, creio que dentro do possivel está sera melhor saída.
Pessoal! Mais uma vez obrigado a todos pela solução de mais um pepino, principalemente a você @Andrey Knupp, pela paciência e empenho em resolver algo teoricamemnte impossível. Abraço a todos e mais uma vez obrigado.
é bom .. hehhehe eu tbm nunca cheguei a
presisar de botar variavel dentro de constante ..
agora ja sei que não da então nen vo ficar agarrado quando tiver que fazer coisa do tipo ...
Tanto Ajuda Quanto Aprende ..Eu Tentei Ajudar e acabei aprendendo .. rsrs
^_^
Abraços
Sei que o tópico já foi resolvido, mas sobre variável em constantes, não vejo nenhum mistério:
<?php
$name = 'Diego Haz';
define('WELCOME', 'Seja bem-vindo, $name');
echo WELCOME;
?>
Saída: Seja bem-vindo, $name
<?php
$name = 'Diego Haz';
define('WELCOME', "Seja bem-vindo, $name");
echo WELCOME;
?>
Saída: Seja bem-vindo, Diego Haz
<?php
$name = 'Diego Haz';
define('WELCOME', 'Seja bem-vindo, ' . $name);
echo WELCOME;
?>
Saída: Seja bem-vindo, Diego Haz
você ta chamando a constante de outra pagina ou classe ?
http://php.net/manual/en/function.constant.php
constant('classe::nome_constante');