Pregunta

Quiero definir algo como esto en PHP:

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

y luego usar esa variable como marcador de "final" en todo mi sitio, así:

echo "Blah blah blah{$EL}";

¿Cómo defino $EL ​​una vez (en solo 1 archivo), lo incluyo en cada página de mi sitio y no tienes que hacer referencia a él usando el (extrañamente al revés) global $EL; declaración en cada función de página?

¿Fue útil?

Solución

La mayoría de los sitios PHP deberían tener un archivo (yo lo llamo encabezado) que se incluye en cada página del sitio.Si coloca esa primera línea de código en el archivo de encabezado, inclúyala así en cada página:

 include 'header.php';

No tendrás que usar la palabra clave global ni nada por el estilo, la segunda línea de código que escribiste debería funcionar.

Editar:Oh, lo siento, eso no funcionará dentro de las funciones...Ahora veo tu problema.

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

Otros consejos

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

¿Estás usando PHP5?Si define la función __autoload() y usa una clase con algunas constantes, puede llamarlas donde las necesite.Lo único irritante de esto es que tienes que escribir algo un poco más largo, como

MyClass::MY_CONST

El beneficio es que si alguna vez decides cambiar la forma en que manejas las nuevas líneas, solo tendrás que cambiarlo en un lugar.

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

Si se me permite ofrecer una sugerencia, sería evitar este tipo de eco que requiere etiquetas de eco (como <br />).Si pudiera configurar algo un poco más parecido a una plantilla, podría manejar los nl sin tener que escribirlos explícitamente.Así que en lugar de

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

intentar:

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

Simplemente me parece que llamar clases o incluir variables dentro y fuera de funciones es mucho trabajo que no es necesario hacer y, si es posible, es mejor evitar ese tipo de situaciones.

Hacer esto define ('el','\n\<\br/>\n'); guárdalo como el.php

luego puede incluir cualquier archivo que desee utilizar, es decir

echo 'algo'.el;// nota que solo agrego el al final de la línea o al frente

Espero que esto ayude

NOTA, elimine el '\' después de < br ya que tuve que ponerlo o no mostrará la etiqueta br en la respuesta...

@svec sí, esto será así, solo tienes que incluir el archivo dentro de la función también.Así es como funciona la mayor parte de mi software.

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

Otra opción es utilizar un objeto con propiedades estáticas públicas.Solía ​​usar $GLOBALS pero la mayoría de los editores no completan automáticamente $GLOBALS.Además, las clases sin instancias están disponibles en todas partes (porque puedes crear instancias en todas partes 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();

?>

Esto generará <br />

Esto también es más fácil de manejar que las constantes, ya que puede colocar cualquier tipo de valor dentro de la propiedad (matriz, cadena, int, etc.), mientras que las constantes no pueden contener matrices.

Esto me lo sugirió un usuario en el Foros de PhpEd.

svec, utilice un marco PHP.Cualquiera, hay muchos por ahí.Esta es la forma correcta de hacerlo.Con el marco tiene un punto de entrada único para su aplicación, por lo que definir variables en todo el sitio es fácil y natural.Además, no necesita preocuparse por incluir archivos de encabezado ni verificar si el usuario se inicia sesión en cada página: decente marco lo hará por usted.

Ver:

Invierta algo de tiempo en aprender uno de ellos y se lo recuperará muy pronto.

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

Aún así, debe proporcionar la directiva de inclusión en cada único archivo fuente que utilice.Incluso vi algunos proyectos que utilizan esta técnica para proporcionar localizaciones para varios idiomas.Preferiría la forma gettext, pero tal vez sea más fácil trabajar con esta variante para el usuario promedio.

editar Para tu problema te recomiendo el uso de $GLOBALES[], ver Ejemplo #2 para detalles.

Si eso aún no es aplicable, intentaría profundizar en los objetos PHP5 y crear un Singleton estático que proporcione las constantes estáticas necesarias (http://www.developer.com/lang/php/article.php/3345121)

Las sesiones serán su mejor opción, si los datos son específicos del usuario; de lo contrario, utilice un archivo de configuración.config.php:

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

Luego en cada página agregue

require 'config.php'

Podrás acceder a $EL en esa página.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top