百度空间 | 百度首页 
 
查看文章
 
在访问drupal的时候,到底做了什么 and php 架构
2008-11-10 18:36
当一个url进入drupal的时候,首先执行的是根目录下的index.php,这个文件完成下面三个工作:
1 加载配置文件和需要的函数文件
2 menu_execute_active_handler(),根据url指明的modul,到数据表menu_router中查找对应记录,调用查询出的page_callback函数,产生页面输出信息
3 theme(),用第二步得到的信息,结合主题,最终得到要显示的页面主体信息

现在的网站,多数都采用MVC架构。
1 本来网站的资源是通过URL来访问的,最原始的情况是这样的:我们访问一个PHP脚本,i.e. example.php,这个脚本完成 处理接受数据,操作数据库,产生输出数据,构造完整的HTML输出脚本。
2 现在我们不想让什么事情都在这一个脚本里面做,我们想把处理逻辑,操作数据库,和构造HTML代码相分离。这时候我们有了一个改进:modules 文件夹,存放example.php,完成处理逻辑和操作数据库;views文件夹,存放example.php,完成构造HTML代码(zen_cart就采用的是这种架构)。
3 单单少数的脚本,似乎2已经完成了MC 和 V的拆分。但是一个网站往往有很多的脚本,他们完成几个主要的功能,i.e. search , user manage or others。现在想把每个功能的代码放在一个目录下,这是对网站的水平拆分,而2是对网站的垂直拆分。这样交叉在一起就有了新的结果---先垂直再水平:modules/search/,存放搜索相关的MC代码,modules/user/,存放用户相关的MC代码,views/search/,存放搜索相关的V代码,modules/user/,存放用户相关的V代码。或者---先水平再垂直:search/modules/,存放搜索相关的MC代码,user/moldules/,存放用户相关的MC代码,search/views/,存放搜索相关的V代码,user/views/,存放用户相关的V代码。
4 做的好的,可以在MC里面再对MC进行垂直拆分:modules/search/mananger.php完成处理逻辑,modules/search/database.php完成数据库操作。(zend 应该就完整了这个功能)
以前的URL只需要简单的找到文件就可以了,所以URL里面真正有用的信息就是带着文件路径的文件名字。
引进MVC之后,我们必须要对URL进行解析,以得到,MC的存放路径,和V的存放路径。所以现在基本上只要引进了MVC的网站架构,都会对URL进行单独的解析,以确定路由。

类别:Php | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu