PHP课程 - 第3部分 - 创建自己的CMS
使用 CMS 创建网站并不局限于 Drupal、Joomla 或 Wordpress。世界上大多数网站都是基于自写的 CMS 开发的。虽然 PHP 已经有大量成熟的代码,但开发者仍然常常倾向于使用自己的解决方案。让我们来分析一下,为什么值得自己编写一个 CMS。
确实,Drupal 是一个功能强大的系统,拥有大量模块、钩子(hooks)以及用于开发自定义模块的函数。很多人都会编写模块,但我们来看看真正开发 Drupal 核心(CMS 本身)的人有多少?
你可能听说过,Drupal 是上百甚至上千名开发者共同努力的结果。但我们不妨仔细看看,究竟是谁在开发 Drupal。
在 Drupal 下载页面上,有一个区块列出了核心开发者,也就是那些直接参与 CMS 核心代码的人。
drupal.org/node/3060/committers?sort=desc&order=Commits
在该页面上可以看到开发者及其对核心的提交次数。以下是部分列表:
开发者 | 最近一次提交 | 首次提交 | 提交次数 |
---|---|---|---|
Dries | 3 天前 | 11 年前 | 10501 次提交 |
webchick | 5 天前 | 3 年前 | 3108 次提交 |
Gábor Hojtsy | 2 天前 | 4 年前 | 1635 次提交 |
Steven | 4 年前 | 11 年前 | 1156 次提交 |
drumm | 1 年前 | 5 年前 | 764 次提交 |
killes@www.drop.org | 4 年前 | 6 年前 | 506 次提交 |
Kjartan | 5 年前 | 11 年前 | 383 次提交 |
catch | 2 天前 | 21 周前 | 329 次提交 |
逐一分析:
Dries(1 万次提交)——全名 Dries Buytaert,是 Drupal 项目的创始人。正如你所见,Drupal 项目已经存在超过 11 年。Dries 创建了 Acquia 公司,专门提供 Drupal 网站的技术支持(与 Drupal 自身不同,这是一项收费服务),同时也参与 Drupal 及其模块的开发。在一次采访中,Dries 曾表示他现在已不再直接参与核心开发,而主要负责管理 Acquia 公司。而他提交的大量核心代码,大多是其他开发者提交的补丁(patch),他负责合并。
webchick(3 千次提交)——全名 Angie Byron,Drupal 7 的主要开发者之一。她曾在 Lullabot 公司工作,现在(或曾经)在 Acquia 公司任职。她还创建了著名的命令行工具 Drush,用于通过终端操作 Drupal。目前,Angie 是 Drupal 的核心开发负责人之一。
Gábor Hojtsy——是 Drupal 6 的主要开发者之一,并在 Drupal 7 中负责国际化(i18n)和多语言支持功能的实现。
当然,还有其他核心开发者,他们负责特定的功能模块。但主要贡献者就是上述这些人。因此,尽管人们常说 Drupal 是“成千上万程序员的成果”,实际上核心部分主要由几位核心开发人员维护。
为什么要自己开发 CMS?
回到最初的问题:为什么要自己开发 CMS?
还记得你花了多长时间学习 Drupal 吗?事实上,有些开发者创建一个简单 CMS 所需的时间,比学习像 Drupal 这样复杂系统所需的时间还要少。
PHP 是一种相对简单的语言(与其他语言相比),编写基本功能代码几乎不需要特别的知识。当然,要开发一个可扩展的系统,你需要逐步深入学习更多内容。但我们先来看下自己开发 CMS 的优点:
1. 完全掌控代码结构。
你知道代码中每个部分的位置。你多久会去看 taxonomy.module
或 comment.module
的源码?大多数人很少这样做。功能已经实现、文档齐全、模板可以覆盖,一切看似完美。但当出现 bug 时呢?难道要在 drupal.org 提交问题等待核心开发者回复?这显然不是高效的解决方式。
2. 高性能。
众所周知,Drupal 相对较慢,它执行的数据库查询很多。而自写的 CMS 可以针对具体任务进行优化,运行速度通常会更快。当然,Drupal 也有缓存与优化模块,但对于共享主机(shared hosting)用户,这仍然可能是问题。
3. 完全自主。
在自写 CMS 中,你不必遵循 “不要修改核心代码” 的规则。你可以自由地直接修改核心逻辑,不需要等待官方版本更新来整合你的改动。
当然,也有一些缺点——但这些我们暂且不谈。Drupal 是一个优秀的系统,这是众所周知的事实。
那么,现在你决定开始编写自己的 CMS 了——我们开始吧。