Question

Je suis en train d'écrire une application PHP qui aura la possibilité de modifier les paramètres via une interface web. Je ne voulais pas pour l'utilisateur (et en fait, il ne sera admins ) pour être en mesure de charger le fichier dans un éditeur de texte, mais plutôt, ils font un changement à l'aide d'un formulaire, et qui va changer le fichier de paramètres (et faire d'autres choses aussi bien ).

A ce stade du développement, les paramètres sont stockés dans un fichier PHP, par exemple:

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

Cependant, les tableaux de l'analyse (et ils deviennent plus compliquées (i.e. à plusieurs niveaux imbriqués) que ci-dessus), ne semble pas tellement amusant. Et parce que les paramètres spécifiques peuvent être ajoutés et supprimés, la lecture du fichier entier, puis écrire tous les paramètres à nouveau, ne semble pas amusant non plus.

Quels sont les avantages et les inconvénients à utiliser les formats suivants? (Et tous les autres que je manqué):

  • Custom XML
  • INI (capable d'utiliser parse_ini_file)

(utilisant une base de données est pas approprié en raison des exigences du projet. Je comprends dans de nombreux cas, une base de données serait préférions, mais pas dans ce cas.)

Si vous étiez incapable d'utiliser une base de données, et a dû stocker des paramètres qui pourraient être modifiés à l'aide d'une interface Web, que feriez-vous?

(Note: Ceci est une autre question celui-ci , où les paramètres ne peuvent être modifiés, il est fichier PHP tout le chemin. Et oui, la configuration n'écrit actuellement un fichier PHP avec les paramètres corrects.)

Était-ce utile?

La solution 2

OK, je n'ai pas une sorte de réponse que je cherchais. Voici le genre de chose que je me attendais.

INI

  • Enregistrement des paramètres dans un fichier INI peut être approprié pour les paramètres simples que vous souhaitez que l'utilisateur d'éditer manuellement.
  • Cependant, la création de tableaux complexes est pas facile, et nécessiterait quelques acrobaties mentales pour comprendre ce qui est intitulé à quel niveau du tableau.
  • Les mots réservés, qui ne doit pas être utilisé partout dans le fichier, comprennent: oui, non, vrai et faux, cela pourrait être problématique.
  • Constantes peut être utilisé dans le fichier.
  • Non construit en méthode d'écriture des fichiers INI.

XML

  • Peut utiliser l'extension SimpleXML, qui « fournit un ensemble d'outils très simple et facilement utilisable » pour transformer XML en un objet qui peut ensuite être utilisé avec les méthodes normales.
  • Permet l'utilisation des tableaux complexes.
  • Possibilité de modifier manuellement, si nécessaire.
  • Peut utiliser des outils externes pour vérifier la validité du fichier.
  • Beaucoup de nombreux processeurs XML disponibles pour PHP.

YAML

Rappelez-vous: aucune base de données. Nécessite pouvoir utiliser des tableaux complexes.

Autres conseils

Si vous n'êtes pas engagé à utiliser XML, vous pouvez envisager YAML . Je ne l'ai utilisé avec Ruby, mais un rapide Google suggère il y a quelques options pour le support de PHP. TBF, les liens y sont des arguments contre en utilisant YAML avec PHP, mais YMMV.

Je ne voudrais pas que l'idée d'une personne ayant un accès direct sur les paramètres, il est donc important de fournir une interface pour agir comme un tampon, ce qui empêche les attaques délibérées et d'assurer la production propre.

Avec cela à l'esprit le choix du format de côté serveur est pas du tout important, aussi longtemps que vous pouvez interagir avec correctement tous les autres problèmes peuvent être contournées.

Je vous recommande un fichier XML personnalisé, de cette façon votre config échelle bien et vous pouvez utiliser les bibliothèques XML PHP pour y accéder.

Un exemple rapide:

<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 a construit dans les fonctions d'édition et d'analyse syntaxique des fichiers INI, qui utilisent un format texte brut aux paramètres du programme de magasin.

Je l'ai utilisé une approche en deux étapes. Les variables et leurs noms sont stockés dans la base de données avec une interface qui permet à l'utilisateur la possibilité de les modifier. Quand ils les changent un fichier est enregistré sur le serveur, puis référencé throught sur l'application (Les modifications sont alos réenregistrés à la DB). Permet la mise à jour facile et effectue des sauvegardes simples - pas besoin de sauvegarder les fichiers, la base de données de sauvegarde juste. Les fichiers résultants ne sont que des fichiers .inc qui sont dans le format $ variableName = 'VariableValue';

Et pourquoi pas php simple?

configure-form.php

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

champs de saisie ex. name='upload' value='<?php echo UPLOAD; ?>'

un fichier configure.php:

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

et vous l'avez. Simple php qui crée un fichier de configuration pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top