Domanda

Voglio definire qualcosa del genere in php:

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

e poi usa quella variabile come indicatore di "fine" in tutto il mio sito, in questo modo:

echo "Blah blah blah{$EL}";

Come posso definire $EL una volta (in solo 1 file), includerlo in ogni pagina del mio sito e non devo fare riferimento ad esso utilizzando (stranamente al contrario) global $EL; dichiarazione in ogni funzione della pagina?

È stato utile?

Soluzione

La maggior parte dei siti PHP dovrebbe avere un file (io lo chiamo header) da includere in ogni singola pagina del sito.Se inserisci la prima riga di codice nel file di intestazione, includila in questo modo su ogni pagina:

 include 'header.php';

non dovrai utilizzare la parola chiave globale o altro, la seconda riga di codice che hai scritto dovrebbe funzionare.

Modificare:Oh scusa, non funzionerà all'interno delle funzioni...ora vedo il tuo problema.

Modifica n. 2:Ok, segui il mio consiglio originale con l'intestazione, ma usa a definire() piuttosto che una variabile.Quelli funzionano all'interno delle funzioni dopo essere stati inclusi.

Altri suggerimenti

Sembra il lavoro di una costante.Vedi la funzione definire().

Stai usando PHP5?Se definisci la funzione __autoload() e usi una classe con alcune costanti, puoi chiamarle dove ti servono.L'unica cosa aggravante è che devi digitare qualcosa un po' più a lungo, tipo

MyClass::MY_CONST

Il vantaggio è che se mai decidessi di cambiare il modo in cui gestisci le nuove linee, dovrai cambiarlo solo in un posto.

Naturalmente, un possibile aspetto negativo è che stai chiamando includendo una funzione extra (__autoload()), eseguendo quella funzione (quando fai riferimento alla classe), che quindi carica un altro file (il tuo file di classe).Potrebbe essere più sovraccarico di quanto valga.

Se posso offrire un suggerimento, sarebbe quello di evitare questo tipo di eco che richiede l'eco di tag (come <br />).Se potessi impostare qualcosa di un po' più simile a un modello, potresti gestire gli nl senza doverli digitare esplicitamente.Quindi invece di

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

Tentativo:

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

Mi sembra che richiamare classi o includere variabili all'interno o all'esterno delle funzioni sia un sacco di lavoro che non è necessario fare e, se possibile, è meglio evitare questo tipo di situazioni.

Fai questo define ('el','\n\<\br/>\n'); salvalo come el.php

quindi puoi includere tutti i file che desideri utilizzare, ad es

echo 'qualcosa'.el;// nota che aggiungo semplicemente el alla fine della riga o all'inizio

Spero che questo aiuto

NOTA: rimuovi il carattere '\' dopo < br poiché ho dovuto inserirlo altrimenti non mostrerà il tag br nella risposta...

@svec sì, lo farà, devi solo includere anche il file all'interno della funzione.Questo è il modo in cui funziona la maggior parte dei miei software.

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

Un'altra opzione consiste nell'utilizzare un oggetto con proprietà statiche pubbliche.Usavo $GLOBALS ma la maggior parte degli editor non completa automaticamente $GLOBALS.Inoltre, le classi non istanziate sono disponibili ovunque (perché puoi istanziare ovunque senza dire a PHP che utilizzerai la classe).Esempio:

<?php

class SITE {
    public static $el;
}

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

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

Test();

?>

Questo verrà prodotto <br />

Questo è anche più semplice da gestire rispetto alle costanti poiché puoi inserire qualsiasi tipo di valore all'interno della proprietà (array, stringa, int, ecc.) Mentre le costanti non possono contenere array.

Questo mi è stato suggerito da un utente su Forum PhpEd.

svec, usa un framework PHP.Qualunque: ce ne sono molti là fuori.Questo è il modo giusto per farlo.Con Framework hai un singolo punto di ingresso per la tua applicazione, quindi definire le variabili a livello del sito è facile e naturale.Inoltre, non è necessario preoccuparti di includere file di intestazione né verificare se l'utente viene effettuato l'accesso in ogni pagina: Dired Framework lo farà per te.

Vedere:

Investi un po' di tempo nell'apprendimento di uno di essi e ti ripagherà molto presto.

IIRC una soluzione comune è un semplice file che contiene le tue dichiarazioni, che includi in ogni file sorgente, qualcosa come 'costanti.inc.php'.Lì puoi definire una serie di variabili a livello di applicazione che vengono poi importate in ogni file.

Tuttavia, devi fornire la direttiva include in ogni singolo file sorgente utilizzato.Ho anche visto alcuni progetti che utilizzano questa tecnica per fornire localizzazioni in diverse lingue.Preferirei il metodo gettext, ma forse questa variante è più semplice da utilizzare per l'utente medio.

modificare Per il tuo problema consiglio l'uso di $GLOBALI[], Vedere Esempio n.2 per dettagli.

Se ciò non è ancora applicabile, proverei a scavare negli oggetti PHP5 e a creare un Singleton statico che fornisca le costanti statiche necessarie (http://www.developer.com/lang/php/article.php/3345121)

Le sessioni saranno la soluzione migliore, se i dati sono specifici dell'utente, altrimenti usa semplicemente un file conifg.configurazione.php:

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

Quindi su ogni pagina aggiungi

require 'config.php'

potrai accedere a $EL su quella pagina.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top