[2009/04/16]发布《Drupal项目实战-公司订餐系统(四)》本博客内容均为原创(Original),如有雷同,纯属巧合。转载请注明出处。同时欢迎学术探讨与批评。

2009年1月11日星期日

Drupal地心游记:神秘的羊皮纸

夜深人静。我独自一人收拾行囊,将探险所需要的各种工具装在包里。由于长期的奔波与不安定的生活,没有多少钱和家当,而且我估计在探索Drupal地心深处的过程中,钱也派不上什么用场。唯一可用的,就是几本经常翻看的手册,如PHP、HTML、CSS、JavaScript,以及MySQL等,它们陪伴了我很多年。这些手册应该是Drupal地心中最重要的参考依据了,少了它们,有些谜团就不好解答了。

动身之前,有一件非常重要的事,那就是有一样东西必须要弄到——地图。这个地图并不是去Drupal城的地图,而是探索Drupal地心的路线图。前年夏天,我辗转获得了Drupal城缔造者Dries Buyteart写的一本厚厚的书,每页的内容是被称为“程序源代码”的文字。这本书详细记录了Drupal城地下的构造及运转机制,显然是探险的依据,但还有一个重要的问题没有解决:入口的位置以及探索的路线。

我不停的翻看那本厚厚的书,试图从中找到答案。突然,我觉得这本书中有一页与其它纸的质地不同。其它的纸就像我们日常用的普通的纸,而这张纸的手感却不一样,很有韧性,而且上面的字迹比其它纸上的更为清楚且浑厚。原来是一张羊皮纸!



在很多西方的探险小说中,羊皮纸通常是非常重要的道具,因为它的上面会记载着通向神秘之国以及宝藏的路线图。同样,要探索Drupal,也一定会有一个“羊皮纸”,上面应该标注着地图或神秘的密码,这样才使探险者不会迷失方向。我翻看了很多次这本书,才将目光集中在这一页羊皮纸上。在这个页上有一行中的字迹比其它的更厚重——index.php。

经过我仔细的阅读,确定它就是(Drupal根目录下)index.php的源代码。不难发现,Drupal城中的所有建筑以及景观(页面),都是由index.php来生成的。那么index.php的源码中,也一定蕴含着探索Drupal地心的路线图了。

在Drupal中,index.php负责所有URL的解析和所有页面的生成工作。比如要访问增加内容的页面,它的URL是http://localhost/drupal/index.php?q=node/add;如果要访问管理页面,那就是index.php?q=admin。由此可见,index.php是整个Drupal系统的路由(route),用于接收URL请求,并跟据请求,调用不同的函数,最终生成整个页面。

即使我们开启了Clean URL,用简洁的方式(如http://localhost/drupal/admin来访问管理页面)访问页面,其原理只是利用Apache的Rewrite功能,将Clean URL转义为index.php?q={},调用index.php来生成页面。

据此分析,Index.php就是“Drpual城地心”的入口,沿着它的指引的道路(脚本的执行顺序),应该就可以走完整个探险之旅,最后平安回到入口。否则就有可能迷失于Drupal地心深处,等待我的只有未知的生物和无尽的黑暗了......






6 条评论:

  1. 我一直对科幻小书非常喜爱,前一阶段又看了《鬼吹灯》,勾起了我对神秘的未知世界的强烈兴趣。本文具有半娱乐性质,主旨是希望大家能以一种很愉悦的心态来和我一起解析Drupal的源代码,我想信这一定是一次很好的提升我们素养的机会。

    回复删除
  2. 这种方式很引人入胜。

    回复删除
  3. 老师用这样的手法写看起来太棒了,以后写了就贴出来给我们分享噢!

    回复删除
  4. 希望方医生继续可以分析下去。。。

    回复删除
  5. 我分析过DRUPAL的源代码,量非常多。按你这样的写法和进度,一个月写一篇……
    我相信到我90岁你还没写好。

    回复删除
  6. 嗯,有道理,不过我想起了“愚公移山”的精神...哈哈。我不想详尽分析所有源代码,只想找找Drupal的优秀之处。

    回复删除