牛骨文教育服务平台(让学习变的简单)
博文笔记

ThinkPHP3.2.2的实践(一)

创建时间:2014-05-01 投稿人: 浏览次数:1103

今天不是很爽~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 HomeController;
use ThinkController;
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~

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。