Frage

Ich bin in den Prozess unserer CMS der Renovierung und ich habe in einer Situation führen, dass ich weiß nicht, welche Lösung zu übernehmen. Grundsätzlich jeder unserer Kunden beherbergt ihre Website-Inhalte in ihrer eigenen Datenbank. Dazu gehören Inhalte, Umfragen, Worte von Besuchern, Menü strucutre, etc suchen.

Ein großer Teil der Inhalte auf unserer Kunden-Websites ist dynamisch und sie können sie über das CMS ändern. All diese Daten werden in einer relationalen Datenbank gespeichert Ich entworfen habe, aber ich bin in ein paar Situationen laufen, wo diese Einstellungen in einer Tabelle halten wäre viel des Guten.

Zum Beispiel ermöglicht die CMS sie E-Mails an eine Liste von Empfängern zu senden. Sie können wählen, unsere Server verwenden oder sie können in ihrem eigenen SMTP-Server setzen. in diesem Fall wäre es jedoch ein wenig übertrieben sein, um eine Tabelle mit einer Spalte für „Mailservice“ zu schaffen, und hat es spezifische Werte zu halten, da die Tabelle nur eine Zeile halten würde.

Hier sind die wenige Ideen, die ich habe kommen mit mit einem wenig auf dieser Seite suchen und / oder googeln, aber ich bin nicht sicher, was ihre Vor- und Nachteile sind:

  • Im Grunde alle die Einstellungen in einer Tabelle halten, wie ich oben erwähnt, etwas, was ich zu vermeiden möchte.
  • Halten Sie alle diese „single“ Einstellungen in einer XML-Datei, die ich ändern würde, wenn sie ihre Einstellungen zu ändern.
  • Haben Sie eine Tabelle namens Präferenzen mit dem folgenden columsn: id, preferenceName, Wert. Jedes Mal, würde ich eine neue Vorliebe habe ich es einfach hinzufügen würde, ändern oder entfernen Sie es (ich weiß nicht, wie diese Option, weil ich glaube, ich würde zu viele Werte zu codieren habe ... zumindest aus dem Weg ich sehe die Umsetzung)

Ich bin ein bisschen in Richtung der XML Idee lehnt aber ich würde gerne ein Feedback von der guten Gemeinschaft bei Stackoverflow zu uns kommen :) Vielleicht XML wäre eine schreckliche Idee für einen Grund, ich völlig übersehen habe oder es gibt eine Ihr-dumb-warum-Artikel nicht-you-just-do-diese Lösung. Vielen Dank für jede Eingabe!

War es hilfreich?

Lösung

Die XML-Route funktioniert gut in dem Sinne, dass es leicht neues attriutes ermöglicht hinzugefügt werden und ermöglicht Attribute gruppiert werden. Der Nachteil ist, dass es unmöglich ist, SQL zu migrieren oder Datenaktualisierung bevorzugt verwendet wird. Es muss programmatisch erfolgen. Sie können auch keine Abfrage Präferenzen für einzelne Attribute die Notwendigkeit entstehen sollte.

Alle sagen, wenn Sie eine kleine Anzahl von Einstellungen werden beibehalten, wo es keine Notwendigkeit, Abfrage oder aktualisieren, um sie über SQL, XML für Sie gut funktionieren würde. Andernfalls würde der Name, Wert Paar-Tabelle in der Datenbank ein besserer Weg zu gehen.

Andere Tipps

würde ich Verwendung einer Datenbanktabelle sagen, wenn Sie bereits, dass haben, und teilen die Namen der Einstellungen in sinnvolle Kategorien:

mail_service:recipients
mail_service:sender
mail_service:smtp:hostname
mail_service:smtp:username
mail_service:smtp:password

Other than that, ich viel lieber yaml XML zur besseren Lesbarkeit willen. Es ist wie XML, aber ohne all die Unordnung.

 mail_service:
     recipients:
       - recipient1@domain.com
       - recipient2@domain.com
       - recipient3@domain.com
       - recipient4@domain.com

  visuals:
    header:
      text_color: #BBCCDD
      background_color: #FFFFFF

Die Symfony YAML Klasse eine feine eigenständige Bibliothek, die Datei zu analysieren in ein PHP-Array.

Sie können auch eine einfache PHP-Datei verwenden.

$settings = array(
 "mail_service:recipients" => " .... ",
 "mail_service:sender" => " .... ",    
 "mail_service:smtp:hostname" => " .... ",
 "mail_service:smtp:username" => " .... ",
 "mail_service:smtp:password" => " .... ");

würde ich mit der XML-Datei gehen (obwohl es nicht XML sein muss - wenn es Java ich ist eine Properties-Datei verwenden würde, bis ich einen Grund, nicht zu finden) oder eine einzelnen Schlüssel / Wert-Tabelle (die ID-Feld nicht gewinnen Sie nicht viel, wenn es einige Fremdschlüssel ist zwischen verschiedenen Installationen zu unterscheiden).

Ich persönlich mag die Vielseitigkeit von SQL und mit Dingen in sich abgeschlossen. Mit Hilfe der Datenbank hinzufügen, keine Komplexität, die nicht bereits vorhanden ist (Sie werden das gleiche Maß an Caching kostenlos erhalten, zum Beispiel, wenn Sie müßten Ihren eigenen XML-Cache wachsen, wenn die Leistung ist ein Problem). Ich würde XML wählen, nur dann, wenn die Werte eine wirklich komplexe Struktur hatte, die über SQL umständlich machen würde manipulieren.

Ich bin sicher nicht, warum Sie denken, Sie brauchen, um „eine Menge von Werten zu codieren“ und speziell warum sollte es mit einer Datenbanklösung mehr sein hartzucodieren als mit einer Feile Lösung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top