前言
前面一章中,我们已经下载了jnoj的项目。今天我们将着重分析下该项目的代码构成及每部分的主要功能。
1.代码构成
先来看下代码构成。

在分析代码构成之前,我们先来梳理下正常的Http请求逻辑。
- 浏览器发起URL请求
- 服务器转发到php-fpm,fpm解析具体的PHP代码,PHP框架将数据和Html合并拼成最终的html文本,并返回给浏览器。
- 浏览器渲染该html文本。
2.入口函数
服务器比如nginx在转发时,会将请求转发到入口函数。这个不难理解,任务事物处理外部请求时总得有个对接人吧?比如C语言的main函数等等。Yii框架的入口存在于web/index.php。看过前面文章的同学应该了解,nginx在配置时,通常会将处理配置到该目录下。
server {
listen 8080;
# 修改 root 后的路径为 jnoj/web 目录所对应的路径。看你具体把 jnoj 目录放到哪里。
root /vagrant/deploy/jnoj/web;
index index.php;
server_name _;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ (.+\.php)(.*)$ {
include /usr/local/nginx/conf/fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
一般情况下,入口函数有两个,一个是Http请求的入口函数,一个是命令行的入口函数(根目录下的yii文件)。命令行的入口函数为:

仔细对比会发现,两者只有少许的差异,大多数代码都差不多。
3.MVC模式
MVC模式是将获取的连接转发到后端执行的PHP类来处理。比如对于请求/site/index会转发到后端的SiteController的actionIndex方法来处理,这个模式是固定的,也就是框架的使用方法。我们需要做的就是按照框架的使用说明书来使用就行了。那这些Controller都存在于哪儿呢?就在于根目录下的controllers目录下。

通常情况下,controllers有两种,一种是Http请求,另一种是命令行的方式。那么对于命令行,所处理的controller存在于commands目录下。

前文有提到,服务器需要将数据和html文件拼装后组成Html文件返回给浏览器。controller只提供数据,提供Html文件的需要在views目录的PHP类来提供。

4. 数据库配置
对于web项目,通常都要配置数据库的账号密码等等。Yii的配置文件存在于config目录下。

5. 模型层
该部分为ORM框架所必须的,通常跟数据库表字段是一一对应的。常用该框架来方便我们存取数据。其通常存在于models目录下。

其他目录不是特别重要,不了解的同学可以自行百度或者留言,我会一一解读。
990

被折叠的 条评论
为什么被折叠?



