Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 关于如何保持网站的不同选项';谁的偏好?_Design Patterns_Content Management System_User Preferences - Fatal编程技术网

Design patterns 关于如何保持网站的不同选项';谁的偏好?

Design patterns 关于如何保持网站的不同选项';谁的偏好?,design-patterns,content-management-system,user-preferences,Design Patterns,Content Management System,User Preferences,我正在更新我们的CMS,我遇到了一个我不知道该采用哪种解决方案的情况。基本上,我们的每个客户都在自己的数据库中存储他们网站的内容。这包括内容、调查、访问者使用的搜索词、菜单结构等 我们客户网站上的许多内容都是动态的,他们可以通过CMS进行更改。所有这些数据都保存在我设计的关系数据库中,但我在一些情况下运行,在表中保存这些首选项会有点过头 例如,CMS允许他们向收件人列表发送电子邮件。他们可以选择使用我们的服务器,也可以安装自己的smtp服务器。但是,在这种情况下,创建一个包含“mailServi

我正在更新我们的CMS,我遇到了一个我不知道该采用哪种解决方案的情况。基本上,我们的每个客户都在自己的数据库中存储他们网站的内容。这包括内容、调查、访问者使用的搜索词、菜单结构等

我们客户网站上的许多内容都是动态的,他们可以通过CMS进行更改。所有这些数据都保存在我设计的关系数据库中,但我在一些情况下运行,在表中保存这些首选项会有点过头

例如,CMS允许他们向收件人列表发送电子邮件。他们可以选择使用我们的服务器,也可以安装自己的smtp服务器。但是,在这种情况下,创建一个包含“mailService”列的表并让它保存特定值会有点过分,因为该表只保存一行

以下是我在本网站和/或谷歌上搜索后得出的一些想法,但我不太确定它们的利弊:

  • 基本上把所有的偏好都放在一个表中,就像我上面提到的,这是我想要避免的
  • 将所有这些“单一”首选项保存在一个XML文件中,当它们更改设置时,我会修改该文件
  • 有一个名为preferences的表,其列号如下:id、preferenceName、value。每次我有一个新的首选项时,我都会添加、修改或删除它(我不喜欢这个选项,因为我觉得我必须硬编码太多的值…至少从我看到的实现方式来看)

我有点倾向于XML的想法,但我想从Stackoverflow这里的好社区得到一些反馈:)也许使用XML会是一个可怕的想法,因为我完全忽略了一个原因,或者有一个“你为什么不——你——只是——做这个解决方案”的问题。谢谢你的意见

xml路由工作得很好,因为它可以轻松地添加新属性并对属性进行分组。缺点是无法使用SQL迁移或更新首选项数据。必须按程序进行。如果需要,也不能查询单个属性的首选项


总而言之,如果您维护少量的首选项,而不需要通过SQL查询或更新它们,那么xml将非常适合您。否则,数据库中的名称、值对表将是一种更好的方法。

xml路由工作良好,因为它可以轻松地添加新属性并对属性进行分组。缺点是无法使用SQL迁移或更新首选项数据。必须按程序进行。如果需要,也不能查询单个属性的首选项


总而言之,如果您维护少量的首选项,而不需要通过SQL查询或更新它们,那么xml将非常适合您。否则,数据库中的名称、值对表将是一种更好的方法。

如果您已经有了一个数据库表,我会说使用一个数据库表,并将设置的名称分成合理的类别:

mail_service:recipients
mail_service:sender
mail_service:smtp:hostname
mail_service:smtp:username
mail_service:smtp:password
除此之外,为了可读性,我更喜欢XML。它类似于XML,但没有所有的混乱

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

  visuals:
    header:
      text_color: #BBCCDD
      background_color: #FFFFFF
是一个很好的独立库,可以将该文件解析为PHP数组

您还可以使用一个简单的PHP文件

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

如果您已经有了一个数据库表,我会说使用一个数据库表,并将设置的名称分为合理的类别:

mail_service:recipients
mail_service:sender
mail_service:smtp:hostname
mail_service:smtp:username
mail_service:smtp:password
除此之外,为了可读性,我更喜欢XML。它类似于XML,但没有所有的混乱

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

  visuals:
    header:
      text_color: #BBCCDD
      background_color: #FFFFFF
是一个很好的独立库,可以将该文件解析为PHP数组

您还可以使用一个简单的PHP文件

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

我会使用XML文件(虽然它不需要是XML——如果它是Java,我会使用属性文件,直到找到不使用的理由)或单个键/值表(id字段不会给您带来太多好处,除非它是区分不同安装的外键)

就我个人而言,我喜欢SQL的多功能性和自包含性。使用数据库不会增加任何不存在的复杂性(例如,如果性能有问题,您将不得不增加自己的XML缓存,您将免费获得相同级别的缓存)。只有当值的结构非常复杂,使得通过SQL进行操作非常麻烦时,我才会选择XML


我不确定您为什么认为需要“对很多值进行硬编码”,特别是为什么数据库解决方案比文件解决方案有更多的硬编码。

我会选择XML文件(尽管它不需要是XML——如果它是Java,我会使用属性文件,直到找到不这样做的理由)或单个键/值表(id字段不会给您带来太多好处,除非它是一些外键,用于区分不同的安装)

就我个人而言,我喜欢SQL的多功能性和自包含性。使用数据库不会增加任何现有的复杂性(例如,如果性能有问题,您将不得不增加自己的XML缓存,您将免费获得相同级别的缓存)只有当值的结构非常复杂,使得通过SQL进行操作非常麻烦时,我才会选择XML


我不知道你为什么认为你需要“硬编码很多值”特别是为什么数据库解决方案比文件解决方案有更多的硬编码。

+1用于确定它不应该是数据库…或XML。有很多文件格式,XML并不总是最佳选择。特别是对于键/值映射。感谢您提供的信息。我从未听说过YAML which是我首先在这里问这个问题的原因。+1用于确定它不应该是数据库…或XML。有很多文件格式,XML并不总是最佳选择。特别是