Pergunta

Eu quero definir algo assim em php:

$EL = "\n<br />\n";

e então usar essa variável como um marcador de "linha final" em todo o meu site, assim:

echo "Blah blah blah{$EL}";

Como defino $EL ​​uma vez (em apenas 1 arquivo), incluo-o em todas as páginas do meu site e não tenho que referenciá-lo usando o (estranhamente ao contrário) global $EL; declaração em cada função da página?

Foi útil?

Solução

A maioria dos sites PHP deve ter um arquivo (eu chamo de cabeçalho) que você inclui em cada página do site.Se você colocar a primeira linha de código no arquivo de cabeçalho, inclua-a assim em todas as páginas:

 include 'header.php';

você não precisará usar a palavra-chave global nem nada, a segunda linha de código que você escreveu deve funcionar.

Editar:Ah, desculpe, isso não funcionará dentro de funções ...agora vejo seu problema.

Edição nº 2:Ok, siga meu conselho original com o cabeçalho, mas use um definir() em vez de uma variável.Eles funcionam dentro de funções após serem incluídos.

Outras dicas

Parece o trabalho de uma constante.Veja a função definir().

Você está usando PHP5?Se você definir a função __autoload() e usar uma classe com algumas constantes, poderá chamá-las onde precisar.O único agravante disso é que você tem que digitar algo um pouco mais longo, como

MyClass::MY_CONST

A vantagem é que, se você decidir mudar a maneira como lida com novas linhas, só precisará alterá-la em um só lugar.

Claro, um possível negativo é que você está chamando incluindo uma função extra (__autoload()), executando essa função (quando você faz referência à classe), que então carrega outro arquivo (seu arquivo de classe).Isso pode ser mais indireto do que vale a pena.

Se eu puder oferecer uma sugestão, seria evitar esse tipo de eco que requer tags de eco (como <br />).Se você pudesse configurar algo um pouco mais parecido com um modelo, você poderia lidar com os nls sem precisar digitá-los explicitamente.Então, em vez de

echo "Blah Blah Blah\n<br />\n";

tentar:

<?php
if($condition) {
?>
<p>Blah blah blah
<br />
</p>
<?php
}
?>

Parece-me que chamar classes ou incluir variáveis ​​​​dentro e fora de funções é muito trabalho que não precisa ser feito e, se possível, é melhor evitar esse tipo de situação.

Fazem isto define ('el','\n\<\br/>\n'); salve-o como el.php

então você pode incluir quaisquer arquivos que deseja usar, ou seja

echo 'alguma coisa'.el;// note que acabei de adicionar el no final da linha ou na frente

Espero que esta ajuda

NOTA, remova o '\' depois de < br, pois tive que colocá-lo ou ele não mostrará a tag br na resposta ...

@svec sim, será, basta incluir o arquivo dentro da função também.É assim que a maior parte do meu software funciona.

function myFunc()
 {
require 'config.php';
//Variables from config are available now.
 }

Outra opção é usar um objeto com propriedades estáticas públicas.Eu costumava usar $GLOBALS, mas a maioria dos editores não preenche automaticamente $GLOBALS.Além disso, classes não instanciadas estão disponíveis em qualquer lugar (porque você pode instanciar em qualquer lugar sem informar ao PHP que usará a classe).Exemplo:

<?php

class SITE {
    public static $el;
}

SITE::$el = "\n<br />\n";

function Test() {
    echo SITE::$el;
}

Test();

?>

Isso produzirá <br />

Isso também é mais fácil de lidar do que as constantes, pois você pode colocar qualquer tipo de valor dentro da propriedade (matriz, string, int, etc.), enquanto as constantes não podem conter matrizes.

Isso foi sugerido a mim por um usuário no Fóruns de PHPEd.

svec, use uma estrutura PHP.Qualquer um - há muitos deles por aí.Esta é a maneira certa de fazer isso.Com a estrutura, você tem um único ponto de entrada para o seu aplicativo, portanto, a definição de variáveis ​​em todo o site é fácil e natural.Além disso, você não precisa se preocupar em incluir arquivos de cabeçalho nem verificando se o usuário está logado em todas as páginas - estrutura decente vai fazer ele para você.

Ver:

Invista algum tempo aprendendo um deles e ele terá retorno em breve.

IIRC, uma solução comum é um arquivo simples que contém suas declarações, que você inclui em cada arquivo de origem, algo como 'constantes.inc.php'.Lá você pode definir várias variáveis ​​de todo o aplicativo que são importadas em cada arquivo.

Ainda assim, você deve fornecer a diretiva include em todo único arquivo de origem que você usa.Até vi alguns projetos usando essa técnica para fornecer localizações para vários idiomas.Eu preferiria o método gettext, mas talvez essa variante seja mais fácil de trabalhar para o usuário médio.

editar Para o seu problema recomendo o uso de $GLOBAIS[], ver Exemplo #2 para detalhes.

Se isso ainda não for aplicável, tentaria desenterrar objetos PHP5 e criar um Singleton estático que fornecesse as constantes estáticas necessárias (http://www.developer.com/lang/php/article.php/3345121)

As sessões serão sua melhor aposta, se os dados forem específicos do usuário, caso contrário, basta usar um arquivo conifg.configuração.php:

<?php
$EL = "\n<br />\n";
?>

Então, em cada página, adicione

require 'config.php'

então você poderá acessar $EL nessa página.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top