Domanda

Sto scrivendo un'applicazione PHP che avrà la possibilità di modificare le impostazioni attraverso un'interfaccia web. Non intendevo per l'utente (e in realtà, sarà solo essere admin ) per essere in grado di caricare il file in un editor di testo, ma piuttosto, fare un cambiamento utilizzando un modulo, e che cambierà il file delle impostazioni (e fare anche altre cose ).

In questa fase dello sviluppo, le impostazioni vengono memorizzate in un file PHP, ad esempio:

define ('UPLOAD_DIR','uploads/');
define ('DISPLAY_NUM',true);
$names = array('a' => 'b','c'=>'d','e'=>'f');

Tuttavia, l'analisi di matrici (e ottengono più complicate (cioè multilivello nidificato) rispetto al precedente), non sembra così divertente. E poiché le impostazioni specifiche possono essere aggiunti e rimossi, leggendo l'intero file, e poi scrivendo tutte le impostazioni di nuovo, non sembra divertente neanche.

Quali sono i vantaggi e gli svantaggi di usare i seguenti formati? (E tutti gli altri che ho perso):

  • XML personalizzato
  • INI (in grado di utilizzare parse_ini_file)

(Utilizzando un database non adatto a causa dei requisiti per il progetto. Capisco in molte situazioni una banca dati sarebbe preferito, non solo in questo caso).

Se non erano in grado di utilizzare un database, e ha dovuto memorizzare le impostazioni che possono essere modificati tramite un'interfaccia web, cosa faresti?

(Nota: Questa è una domanda diversa da questo , dove le impostazioni non possono essere modificate, è file PHP tutta la strada. E sì, l'installazione non attualmente scrivere un file PHP con le impostazioni corrette.)

È stato utile?

Soluzione 2

Ok, non ha ottenuto alcun tipo di risposta che cercavo. Ecco il genere di cosa che mi aspettavo.

INI

  • Memorizzazione di impostazioni in un file INI potrebbe essere appropriato per semplici impostazioni che si desidera all'utente di modificare a mano.
  • Tuttavia, la creazione di array complessi non è facile, e richiederebbe alcune acrobazie mentali per capire quale voce è a quale livello della matrice.
  • Le parole riservate, che non devono essere utilizzati in qualsiasi punto del file, includono: sì, no, vero e falso, questo potrebbe essere problematico.
  • Costanti può essere utilizzato nel file.
  • Nessun costruito nel metodo di scrittura fuori i file INI.

XML

  • possibile utilizzare l'estensione SimpleXML, che "fornisce una serie di strumenti molto semplice e facilmente utilizzabile" per trasformare XML in un oggetto che può quindi elaborato utilizzando i normali metodi.
  • Consente l'uso di matrici molto complesse.
  • possibile modificare manualmente, se necessario.
  • Può usare strumenti esterni per verificare la validità del file.
  • Molti molti processori XML disponibili per PHP.

YAML

Ricorda: nessun database. Richiede poter utilizzare le matrici complesse.

Altri suggerimenti

Se non si impegna a utilizzare XML, come si può prendere in considerazione YAML . Ho usato solo con Ruby, ma un rapido Google suggerisce che ci sono un paio di opzioni per il supporto PHP. TBF, i collegamenti ci sono alcuni argomenti contro utilizzando YAML con PHP, ma YMMV.

Non mi piace l'idea di qualcuno che ha accesso diretto sulle impostazioni, quindi è importante fornire un'interfaccia per fare da cuscinetto, impedendo attacchi deliberati e garantendo uscita pulita.

Con questo in mente la scelta del formato lato server non è importante a tutti, fino a quando si può interfacciarsi con esso in modo corretto tutti gli altri problemi può essere lavorato intorno.

Mi consiglia un file XML personalizzato, in questo modo il vostro config scala bene e si può utilizzare le librerie PHP XML per accedervi.

Un esempio veloce:

<myconfig>
  <define>
    <name>UPLOAD_DIR</name>
    <value>uploads/</value>
  </define>
  <define>
    <name>DISPLAY_NUM</name>
    <value>true</value>
  </define>
  <array id="names">
    <value index="a">b</value>
    <value index="c">d</value>
    <value index="e">f</value>
  </array>
</myconfig>

PHP è costruito nelle funzioni per l'editing e l'analisi di file INI, che utilizzano un formato di testo normale per le impostazioni del programma negozio.

Ho utilizzato un approccio in due fasi. Le variabili ed i loro nomi sono memorizzati nel database con un'interfaccia che offre all'utente la possibilità di cambiarli. Quando li cambiano un file viene salvato sul server e quindi fa riferimento throught l'applicazione (Le modifiche vengono salvate Alos di nuovo al DB). Rende l'aggiornamento dei backup facile e rende semplice - non c'è bisogno di backup dei file, solo il backup del database. I file risultanti sono file solo .inc che sono nel formato $ nomeVariabile = 'VariableValue';

E perché non php normale?

configure-form.php

forma method=POST action='configure.php',

campi di input es. name='upload' value='<?php echo UPLOAD; ?>'

un file configure.php:

$myfile = 'sets.php';
$fh = fopen( $myfile, 'w' );
$upload = '"/upload/"';
$txt = "define( UPLOAD, '" . $_POST['upload'] . "' );";
fwrite( $fh, $txt );
fclose( $fh );

e il gioco è fatto. php semplice, che crea un file di configurazione per voi.

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