今天不是很爽~ISCC的Web题做不出来,默默的继续看ThinkPHP~
0x01
ThinkPHP是一个基于MVC模型的PHP框架 T_T(编不出来了,搬运下官网的简介)
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。
官网的教程基于3.1,由于3.2的改动还是挺大的,开始还是让我恼火了一阵子。希望在实践中掌握PHP,MVC。龙门阵结束,准备干货。
0x02
部署自己的开发环境
PHP5+MySQL+Apache2 教程很多,不会找下度娘
ThinkPHP3.2.2 :www.thinkphp.cn/download/543.html
IDE 推荐PHPStrom
在/var/www 文件下生成自己的项目 借用战队的名字MorNing
将解压出来的ThinkPHP文件复制到你的项目文件夹
建立自己的入口文件 localhost/MorNing/index.php
<?php
/**
* Created by PhpStorm.
* User: LGrok
* Date: 4/27/14
* Time: 10:12 PM
*/
define("APP_NAME","Index"); #定义项目名称
define("APP_PATH","./Index/"); #定义项目目录
define("APP_DEBUG",TRUE); #开启调试模式
require "./ThinkPHP/ThinkPHP.php"; #调用这个php文件,它会自动生成ThinkPHP的目录结构
?>
看到这个图像说明你已经可以使用ThinkPHP啦
0x03
MVC<=>(Module,View,Controller) 通过将项目分解为模块和视图两部分,使用控制器作为链接,实现数据和展示的分离。ThinkPHP中使用入口进入控制器,作为访问项目的唯一入口即所有操作都是从入口开始的。
实践开始
修改./Index/Home/Controller/IndexController.class.php
将其中的index 方法改为:echo “hello home";
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
echo "hello home";
}
}
这个就是改变了控制器的index方法,访问入口文件,会调用视图模版并执行Index的index()方法。这时你的浏览器会显示出 hello home
这是最简单的MVC方式,引出ThinkPHP的调用逻辑。
ThinkPHP规定的URL访问规则是 :域名/入口文件/模块/控制器/方法/参数/值
上面的例子中localhost/index.php 由于默认访问等价于访问 localhost/MorNing/index.php/Home/Index/index 你会发现和我们访问入口文件的结果是一样的。
MVC的基本调用逻辑是,用户提出控制请求,控制器使用对应的方法对数据进行处理之后渲染(塞到)对应模版的规定位置。因为这时我们的Index模版为空,所以渲染之后打印了hello home到面板上。
0x04
多入口绑定
有时不同的项目需要不同的入口,比如管理员和普通用户,这时可以将入口文件和模块绑定起来。
实践开始
之后在index.php的同级目录下,使用同样的方法生成Admin模块,这次不需要定义项目名,只需要绑定模块。
<?php
/**
* Created by PhpStorm.
* User: LGrok
* Date: 4/27/14
* Time: 10:12 PM
*/
define("BIND_MODULE","Admin"); #绑定模块
define("APP_PATH","./Index/");
define('BUILD_CONTROLLER_LIST','Index,User,Menu'); #生成需要包含的控制方法
define('BUILD_MODEL_LIST','User,Menu'); #生成需要的子模块
define("APP_DEBUG",TRUE);
require "./ThinkPHP/ThinkPHP.php";
?>
这样就可以通过localhost/MorNing/Admin.php直接访问Admin模块,相比localhost/MorNing/index.php/Admin要方便快捷,好像更加便于管理,因为还没有往后面学习只有这些体会。
code over~