2008-08-16 13 views
5

quiero definir algo como esto en php:¿Cómo configurar variables de todo el sitio en php?

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

y luego usar esa variable como una "línea de fondo" marcador por todo el sitio, así:

echo "Blah blah blah{$EL}"; 

Cómo hacer yo defina $ EL una vez (en solo 1 archivo), inclúyalo en cada página de mi sitio, y no tenga que hacer referencia usando la declaración (extrañamente al revés) global $EL; en cada función de página.

Respuesta

6

La mayoría de los sitios PHP debe tener un archivo (lo llamo encabezado) que incluya en cada página del sitio. Si se pone la primera línea de código en el archivo de cabecera, a continuación, incluirlo como esta en cada página:

include 'header.php'; 

usted no tendrá que utilizar la palabra clave o algo global, la segunda línea de código que escribió deben trabajo.

Editar: Oh, lo siento, eso no funciona dentro de las funciones ... ahora veo tu problema.

Edición # 2: Ok, toma mi consejo original con el encabezado, pero usa un define() en lugar de una variable. Esos trabajan dentro de funciones después de ser incluidos.

-1

IIRC una solución común es un archivo simple que contiene sus declaraciones, que incluye en cada archivo fuente, algo así como 'constantes.inc.php'. Allí puede definir un conjunto de variables de toda la aplicación que luego se importan en cada archivo.

Aún así, debe proporcionar la directiva de inclusión en cada archivo de fuente única que utilice. Incluso vi algunos proyectos que utilizan esta técnica para proporcionar localizaciones para varios idiomas. Preferiría el modo gettext, pero quizás esta variante sea más fácil de usar para el usuario medio.

edición Para su problema que recomendar el uso de $ GLOBALS [], ver Example #2 para más detalles.

Si eso todavía no aplicable, que iba a tratar a digg abajo objetos PHP5 y crear un Singleton estática que proporciona necesita constantes estáticas (http://www.developer.com/lang/php/article.php/3345121)

-1

Sesiones van a ser la mejor opción, si los datos son de usuarios específico, sino solo use un archivo conifg. config.php:

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

Luego, en cada página Añadir

require 'config.php' 

la que podrá acceder a $ EL en esa página.

3

Suena como el trabajo de una constante. Ver la función define().

0

@svec Sí, esto solo tiene que incluir el archivo dentro de la función. Así es como funciona la mayoría de mi software.

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

¿Estás usando PHP5? Si define la función __autoload() y utiliza una clase con algunas constantes, puede llamarlas donde las necesite. La única cosa agravante de esto es que usted tiene que escribir algo un poco más largo, como

MyClass::MY_CONST 

La ventaja es que si alguna vez decide cambiar la forma en que usted maneja nuevas líneas, es suficiente con cambiar en un lugar.

Por supuesto, un posible aspecto negativo es que está llamando incluyendo una función adicional (__autoload()), ejecutando esa función (cuando hace referencia a la clase), que luego carga otro archivo (su archivo de clase). Eso podría ser más gastos generales de lo que vale.

Si puedo ofrecer una sugerencia, sería evitar este tipo de eco que requiere etiquetas de eco (como <br />). Si pudieras configurar algo un poco más como una plantilla, podrías manejar las nl sin tener que escribirlas explícitamente. Así que en lugar de

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

intento:

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

Apenas se parece a mí como llamar a las clases o la inclusión de variables dentro de las funciones, así como a cabo una gran cantidad de trabajo que no hay que hacer y, si es posible, ese tipo de situaciones es mejor evitarlas.

0

Otra opción es usar un objeto con propiedades públicas estáticas. Solía ​​usar $ GLOBALS, pero la mayoría de los editores no completan automáticamente $ GLOBALS. Además, las clases sin instancia están disponibles en todas partes (porque puedes instalarlas en cualquier lugar sin decirle a PHP que vas a usar la clase). Ejemplo:

<?php 

class SITE { 
    public static $el; 
} 

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

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

Test(); 

?> 

Esta es la salida <br />

Ésta es también más fácil de tratar que las constantes que como se puede poner cualquier tipo de valor dentro de la propiedad (array, string, int, etc), mientras que las constantes no pueden contener matrices.

Esto me lo sugirió un usuario en el PhpEd forums.

0

svec, utilice un marco de PHP. Cualquiera - hay muchos de ellos por ahí. Esta es la forma correcta de hacerlo. Con el marco tiene el punto de una sola entrada para su aplicación, por lo que definir las variables de todo el sitio es fácil y natural. Además, no es necesario que se preocupe por incluir archivos de encabezado ni comprobando si el usuario ha iniciado sesión en cada página; decente framework hará por usted.

Ver:

invertir algo de tiempo en el aprendizaje de uno de ellos y se pagará de vuelta muy pronto.

1

hacer esto define ('el','\n\<\br/>\n'); guardarlo como el.php

continuación, se pueden incluir todos los archivos que desea utilizar, es decir

something'.el

echo'; // Nota Acabo de añadir el final de línea o delante

Esperanza esta ayuda

NOTA Por favor, elimine la '\' sa después < ya que tuve que ponerlo en o no lo puedo mostrar Tag br en el respuesta ...

Cuestiones relacionadas