浅尝PHP项目

项目地址(求star): https://github.com/genglintong/market
项目背景: 软件工程的一个课程作业,主要是简单的增删改查,适合入门。
准备工作:需要安装好php环境,mysql数据库,nginx服务器

开始

  • clone代码到本地
# 需要安装git命令
git clone https://github.com/genglintong/marke
# 进入后端模块,前端模块暂时不用管
cd market/market/market
屏幕快照 2018-03-21 下午7.24.40.png
  • 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
屏幕快照 2018-03-21 下午7.50.47.png

修改服务器root目录为项目目录(nginx 操作方法,apache类似),修改端口(也可以不修改,我这里是添加了一个端口的监听)。

#  重启nginx 使配置生效
sudo nginx -s reload

访问 http://localhost:8090/
成功则如下图

屏幕快照 2018-03-21 下午7.57.59.png

浅尝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路由

#代码如下
    /**
     * 搜索接口
     * @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中
    框架会自动读取配置,连接数据库。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 安装ruby 安装sass $ gem install sass如果出现permitted问题通常是权限问题,先尝...
    天蚕阅读 12,927评论 2 5
  • 有这样一个传说,说是秦皇岛是秦始皇出身的地方,在秦皇岛有一个小山,上面有一个老人的手很大可以看到有手指头的印记,有...
    大碗给地平线打叉阅读 1,339评论 0 0