【问题标题】:CMS design patterns and considerationsCMS 设计模式和注意事项
【发布时间】:2011-06-06 18:37:01
【问题描述】:

我正在为一个相对简单的网站创建 cms - 投资组合、一些一般内容页面、自定义博客等。

在深入设计之前需要考虑哪些最佳模式。

我希望系统尽可能灵活,但又不会太复杂。

我已经寻找了一些讨论 cms 和博客设计的好资源,但找不到任何太好的资源。

我的语言是 php,但我想我正在寻找更多独立于语言的建议。

【问题讨论】:

  • 其他建议“不要自己编写”的答案是合理的,但是,为自己作为客户构建任何项目以学习是一个非常好的主意。我建立了一个电子商务商店,我不再使用它,但我学到了很多!
  • 本意是崇高的,但你要问自己为什么要这么做?如果您真的愿意享受编写代码的乐趣,那么我应该向您推荐一些好东西,例如 SOLID 原则、数据存储、开始查看知名框架等。但是!如果你想占有市场并让其他人都失望,那就放弃吧,你一个人是做不到的。

标签: php content-management-system design-patterns


【解决方案1】:

我可能在这里冒着声誉的风险,但我的经验表明,构建自己的 CMS 可能是一个非常合理的决定,尤其是当您熟悉当前的开源系统并了解它们在功能、安全性或什么不是。开源通常意味着许多不能轻易改变的向后兼容性问题和糟糕的架构决策。

我强烈建议您不要仅仅采用 MVC,而是看看使其具有吸引力的想法。

CMS 的一个主要问题是驱动动态网站所涉及的技术范围:用于逻辑的命令式 php、用于数据查询的声明式 SQL、用于接口的标记 HTML、用于动态接口的命令式/功能性 javascript、用于 ajax 调用的 JSON 等. 为使系统易于管理,您必须将这些技术保持在受控和可理解的环境中,但仍要允许顺利集成。知识和最佳实践就在那里。 MVC 只是解决此问题的一种方法。

我当时的选择是使用以下原则:

  • 带有静态调用的面向对象代码(php 是一次性的东西,代码对象的许多实例很少被证明是合理的),除了全局上下文中的一行 init 代码之外什么都没有
  • 使用 XSLT 和自定义内容处理器实现 100% 代码设计分离
  • 可以接受任何 http 请求并将其重新路由到已注册方法的自定义路由器
  • 自定义内容处理器,可以根据请求参数(即http://local/class/method.xhtmlhttp://local/class/method.json)将任意方法输出并转换为任何可用格式,如xhtml、xml、json等
  • 为尽可能多的虚拟 Web 服务器复制一份代码
  • 适用于所有数据库查询的 SQL 查询构建器(选择用于 ORM 的灵活性)
  • 使用 filter_* 函数强制过滤方法输入

我相信你可以选择一些你喜欢的 :) 祝你好运!

【讨论】:

    【解决方案2】:

    没有复杂性的灵活性...不错的程序。

    也许你是个天才,你会做出一些满足你需求的东西。但我认为您将面临的最大问题是安全性健壮性。所以真的,在这个页面上接受其他建议,看看 wordpress、drupal、joomla 和 ezpublish。很多安全工作已经完成。不仅是安全性...

    因此,研究其中一些工具,跟踪它们的缺陷,检查它们的安全策略。研究他们如何处理缓存、会话、引导、绝对和相对 url 管理、文档(图像、视频等)、ajax、身份验证、识别、acl、用户界面、富文本编辑、迁移、模板、页面组合、内容过滤(我尝试删除您不需要的东西,插件、数据库抽象、精细缓存、css 和 js 缩小,以及单个实例简单 CMS 不需要的所有额外复杂的东西)。很快你就会看到他们所做的事情的“图片”。

    通过这项工作,您肯定会注意到一些重大差异和错误。您将开始使用 irc 并抨击开发人员,告诉他们其他人做了更好的选择。你会开始忘记刮胡子。你可能会做一些贡献。有些会被接受,有些不会。老核心开发者不喜欢有人解释他们为什么会犯错误(而且他们会犯错误)。

    现在,你有胡子的那一天到来了。你的一些贡献将开始看起来像分叉。你会有敌人、朋友或追随者。你会开始感受到力量。

    然后你会在 irc 上告诉上帝这个世界是丑陋的,你将制作第一个 CMS,它既灵活又不复杂。人们会哭泣。鸟儿会绕圈跑。您将能够解释什么是 CMS 的设计模式。

    • 我是用户。我知道我要什么。做我想做的事会让用户开心。我很高兴。
    • 您不应相信戴眼镜的人提供的代码
    • “MVC MVC MVC”:人们回应“应该完成”

    说真的,具有颠覆性创新的优秀 CMS 仍有一席之地,分叉历史很久以前就开始于 phpNuke(据我所知)。但有些实际产品确实适用于大多数任务。

    【讨论】:

      【解决方案3】:

      如果您的要求是投资组合,一些一般内容页面,仅限自定义博客,Wordpress 会更简单且更好。

      在 PHP 中可用的 CMS 如此之多,其中最流行的是 Joomla

      【讨论】:

        【解决方案4】:

        除非您无论如何都想改进它,否则重新发明轮子是没有意义的。

        已经有很多 CMS 可用。我个人曾与 ezpublish 合作过。还有其他选项,例如 drupal 等。这是所有可用的开源 cms 的列表 - Click here

        如果您只是想学习,那么您也许可以选择任何一种流行的开源软件,然后研究它们以找到它的架构和设计。

        此外,我认为没有人可以为您提供最适合 CMS 工具的设计模式列表。因为每种设计模式都解决了一些特定的问题。而且,您只需要根据要在项目中解决的特定问题来选择设计模式。

        【讨论】:

          【解决方案5】:

          模型视图控制器模式或 MVC 是一个很好的开始模式。 此模式建议将应用程序的逻辑分离到以下层:数据逻辑(模型)、操作或业务逻辑(控制器)和显示逻辑(视图)。

          这是一个很好的开始模式,因为在此过程中您会遇到其他问题(以及模式)。 以下网站很好地解释了 MVC 概念:MVC Principles

          【讨论】:

          • 为什么人们总是回答 MVC 任何以“我应该使用哪种设计模式......”开头的问题? MVC 不是任何 web 应用的最终答案。
          【解决方案6】:

          如今,编写自己的 CMS 是一种可怕的浪费时间。通常的开源解决方案——现在 Joomla、WordPress 和 Drupal 很流行——由成千上万的人编写,虽然你可能会因为使用现成的而失去一点灵活性,但这远远抵消了不需要从刮。如果您使用 Drupal,您还可以享受高质量、可大规模扩展等代码:)

          【讨论】:

          • 不幸的是,系统必须是自定义的。现成的是不可能的。我很擅长编程,并且将使用 mvc 框架。我正在寻找有关 cms 实际设计的一些好的建议。必须有一些用于简单 cms 的一般良好做法等
          猜你喜欢
          • 1970-01-01
          • 2012-05-16
          • 1970-01-01
          • 2014-10-06
          • 1970-01-01
          • 2023-03-14
          • 2012-08-28
          • 1970-01-01
          • 2016-12-26
          相关资源
          最近更新 更多