项目地址(求star): https://github.com/genglintong/market
项目背景: 软件工程的一个课程作业,主要是简单的增删改查,适合入门。
准备工作:需要安装好php环境,mysql数据库,nginx服务器
开始
- clone代码到本地
# 需要安装git命令
git clone https://github.com/genglintong/marke
# 进入后端模块,前端模块暂时不用管
cd market/market/market
- thinkphp 框架了解
thinkphp是一个简单的,免费的,开源的轻量级php WEB开发框架
www WEB部署目录(或者子目录)
├─index.php 入口文件
├─README.md README文件
├─Application 应用目录
├─Public 资源文件目录
└─ThinkPHP 框架目录 - MVC
MVC即model(模型),view(视图),controller(控制器),它是即是一种框架,也是一种思想。
model:程序各个对象的具体逻辑实现
View:主要是界面展示类
Controller:对请求进行处理,调用各个模型类的方法。
浅谈MVC模式
MVC设计模式
菜鸟教程 - 项目搭建
#修改nginx.conf
cd nginx.conf 配置目录
vi nginx.conf
修改服务器root目录为项目目录(nginx 操作方法,apache类似),修改端口(也可以不修改,我这里是添加了一个端口的监听)。
# 重启nginx 使配置生效
sudo nginx -s reload
访问 http://localhost:8090/
成功则如下图
浅尝PHP项目
- 访问流程
首先我们知道服务器在接收用户请求时会去根目录(就就是我们上面配置文件的目录,默认www,我们修改为了market),然后服务器会找index文件访问。
这时,我们看目录下文件,会发现又一个index.php, 这个文件是整个项目的入口文件。
// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');
// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',True);
// 定义应用目录
define('APP_PATH','./Application/');
// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';
这个文件就是一些功能的配置,其中定义应用目录定义的目录为整个项目的项目代码所在目录。
然后它会根据我们访问的URL,去寻找到对应的控制器。(默认是index)
其实我们访问的第一个URL是这样子的(加上默认信息)
http://localhost:8090/index.php/Home/index/index
即访问 Application/Home 模块的 Controller下,index控制器的index方法。
thinkphp路由
- 举个栗子
URL : http://localhost:8090/index.php/home/goods/searchGoods
路径:home 下 Goods控制器中 searchGoods方法
#代码如下
/**
* 搜索接口
* @param number $pn pagenum 默认为0
* @param string $type 类型 为空则表示不按照类型展示
* @param string $title 按照title模糊搜索 为空则表示不按照标题搜索
* @param number $price 0 不按照价格搜索 -1 从低到高 -2 从高到低 >0 表示大于$title的商品
* @param number $vol 0 不按照余量搜索 1 从低到高 2 从高到低
*/
public function searchGoods($pn = 0,$type = "",$title = "",$price = 0,$vol = 0){
//实例化 Goods
// 框架封装的model层
$Goods = M('Goods');
$fields = array();
$order = array();
//$fields['pn'] = $pn;
if ($type != ""){
$fields['type'] = array('eq',$type);
}
........
// 根据上述条件拼接成sql
$data = $Goods->where($fields)->order($order)->limit($pn*10,10)->getField('id,title,price,overplus,intro,user_id,type,img');
//获取前一条执行的SQL
$sql = $Goods->getLastSql();
//echo $sql;
$serchData['sql'] = $sql;
$serchData['data'] = $data;
//输出信息
$this->ajaxReturn($serchData);
}
- 数据库信息配置
数据库信息配置在Conf/Config.php中
框架会自动读取配置,连接数据库。