2012-01-29 20 views
5

Sto lavorando per creare manualmente il mio CMS personalizzato in PHP e ho alcune costanti che ho definito. C'è un modo semplice per modificare le costanti? Stavo pensando di usare qualcosa come fopen() quindi cambiarlo, ma non ho mai usato le funzioni del filesystem.Come modificare le costanti PHP?

+11

Si consiglia di rivisitare la definizione del dizionario di "costante". – BoltClock

+2

costanti e fopen? –

+3

Perché è necessario modificare le costanti? Se non sono costanti per tutto il codice, utilizzare le variabili – Tom

risposta

26

Una costante è un identificatore (nome) per un valore semplice. Come suggerisce il nome , quel valore non può cambiare durante l'esecuzione dello script (eccetto per le costanti magiche, che in realtà non sono costanti). Una costante fa distinzione tra maiuscole e minuscole per impostazione predefinita. Per convenzione, gli identificatori costanti sono sempre in maiuscolo.

Il nome di una costante segue le stesse regole di qualsiasi etichetta in PHP. Un nome di costante valido inizia con una lettera o underscore, seguito da qualsiasi numero di lettere, numeri o caratteri di sottolineatura. Come un normale espressione, si sarebbe espresso così: [a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *

da: http://php.net/manual/en/language.constants.php

+8

non posso dire meglio della pagina php.net! – Tech4Wilco

0

Per quanto ne so, una volta impostato, una costante non può essere modificata.

14

No. Sono costanti, come in "constant - ciò che è permanente o invariabile" (Wikizionario). Una volta definiti, non c'è modo di cambiarli. Per citare The Fine Manual, sezione Costanti:

valore [di una costante] non possono cambiare durante l'esecuzione dello script.

+0

Mi dispiace per essere errato ... per me le costanti sono solo un valore che può essere utilizzato in un intero sito senza dover continuare a definirli. Avrei dovuto essere più chiaro di ciò che stavo cercando di ottenere. Sto creando il mio CMS solo per mio uso personale e mi chiedevo come avrei potuto creare un modo per modificare le variabili o qualunque fosse un buon termine per loro senza dover modificare manualmente il file oi file che li contengono. Mi dispiace. – legobear154

+0

Non c'è bisogno di scusarsi per non essere corretto, capita a tutti :) – Piskvor

+0

Ok. Quale sarebbe il modo migliore per creare un file di configurazione? Ho intenzione di aggiungere un pannello di amministrazione al mio CMS e voglio che le variabili siano modificabili da lì. – legobear154

15

Le costanti sono costanti e pertanto non possono essere modificate. Se si desidera modificare le costanti del server come allow_url_fopen, vale a dire la responsabilità dell'host, chiedere loro. Se si vuole cambiarli in PHP, utilizzare le variabili

UPDATE

Nel caso in cui la verità è quello che dice Corbin e volete modificarli di installazione, si vorrebbe fare quanto segue: 0. Cambia i valori costanti in sg. come %%constant1. 1. leggi il codice in una variabile. 2. Consenti all'utente di impostare le variabili. 3. Usa str_replace su tutti come str_replace ("%% constant1", $ _ POST ["value1"], $ configfile). 4. Metti $ configfile come contenuto di un file.

UPDATE 2

Per la propria CMS solo, suggerisco il seguente: negozio tutti costanti in un unico file, quindi sarà necessario modificare un solo file. E forse la soluzione precedente potrebbe funzionare per un editing più semplice, ma l'IDK se ne vale la pena.

6

No. Non è possibile modificare le costanti

0

costanti significa il valore è costante, quindi non è possibile modificare le costanti.Se si cambierà le costanti è necessario utilizzare le variabili in stato di costanti:

define('ROOT', '/some/path'); 
echo ROOT; // echo's /some/path 
define('ROOT', '/some/other/path'); // gives an error 
echo ROOT; // gives /some/path (if there were no error 

$root = '/some/path'; 
echo $root; // echo's /some/path 
$root = '/some/other/path'; 
echo $root; // echo's /some/other/path 
0

Credo che significa, nel caso di uno script di installazione, dove si desidera memorizzare una variabile di ingresso ad un file di configurazione, per essere usato nel suo CMS, una volta completata l'installazione. In tal caso, non modifica la costante in fase di esecuzione.

hes probabilmente ottenuto un file in questo modo:

define(DB, ''); 
define(USER, ''); 
define(PASS, ''); 
define(HOST, ''); 

e vuole creare uno script che popolano queste costanti con i dati in modo che possa essere utilizzato nel CMS.

1
in PHP, but only if you have the runkit extension installed. 

However, I must question why you're even defining a constant if you need to change it. It would no longer be a constant once changed and it's appropriate to use constants in your context if it needs to be changed. You may want to consider making it a global variable if it needs to be accessible in other functions or parts of your code, or write proper code by: 
Passing the data as parameters to a function, then returning the manipulated values (if coding in a procedural fashion). 
Set the value in a class' property, then access the value using $this within your class (if coding in an OO fashion). 
Problemi correlati