PHP 陈酒装新瓶,框架寻思 4

新的项目继续在启动中,我也开始考虑程序框架的安排了。由于是和已经熟悉多年的团队合作,所以尽量使用以前熟悉的代码和库(我称之为陈酒)。

对于框架在以前熟悉的基础上我做了些许的修改,现在目录结构看起来是这个样子的。

http://www.gracecode.com/upload/2008_02_18/1203307378.png

其中 htdocs 顾名思义,是 Apache 的根目录(无论采取哪种方式),其中包含了前端开发所需要的 css 和 javascript 目录(当然,还有美工需要考虑到的 images 目录)。

其他的目录是 Apache 不能直接访问的,从各名称都可以猜测其中的意思。include 放置各公共文件,libraries 是各种库文件,template 与 modules 分别是模板目录和模块目录。

这可能有悖于 MVC 思想,但是毕竟实际的开发过程中还是协调分工比较重要。

重点就是在于 htdocs/index.php 该如何的编写(下面说明),但是不管怎么样,先要定义好一个 .htaccess 文件(Apache 重写规则)。这个重写规则我是从 wordpress 上参考过来的,内容其实很简单。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

有关具体的 Apache 重写细节,请参看相应的文档。上述代码的意思就是如果 Apache 找不到请求的文件或者目录就扔给 index.php (也就是 htdocs/index.php 文件)处理。在此框架中,index.php 可以理解为 MVC 里面的控制器(包括路由)。

这样,index.php 就很容易根据 uri 解析所调用的模块、方法以及参数。对于 uri 我有两套方案,一套就是我个人比较推崇的。

/module/method-param-value.html

还有一个就是原有的

/module/method/param/value.html

这两种方案都是可行的,但其中更多的考虑是 SEO 方面。使用“-”链接具有语义的 uri 能更好的使搜索引擎理解(具体信息可以参考这里)。 老方法中,一旦参数加多,那么“看起来”目录嵌套的深度会越来越深。不幸的是,部分搜索引擎会尝试寻找相同目录下的其他文件,从而造成抓取缓慢。

另外的一个问题就是 modules 目录下代码文件的划分。到底是使用原有的 /module/method.php ,还是我自己考虑的 先建立名为 module.php 文件,然后在文件中定义一个类,其中包含 method 方法(当然,这这样的设计会造成 htdocs/index.php 也不一样)。

我认为这两种各有利弊,传统的方法可能会造成文件过多,但是效率是值得考虑的(单纯过程化的 include/require)。而第二种方法刚好与第一种方法相反,文件是少了,但是由于引入了类的机制,效率方面值得重新推敲(我可不想因为面向对象而面向对象)。

总之,大体上的框架就初步这样定了,而具体的细节我希望能团队再详细沟通一下。

这里是《陈酒装新瓶,框架寻思》的 永久连接(Permalink),欢迎您 留言 或发送 Trackback。您也可以查看此篇文章的 Wap 版本(适用于移动设备)。 最后,如果您对本站的内容感兴趣,欢迎您 订阅本站
欢迎您留言

请输入您的称呼

请输入您的电子邮件

请您输入留言内容