ThinkPHP是一套PHP的封装框架。为PHP后端常见开发做了封装,方便做逻辑开发。本文也是在阅读了ThinkPHP的文档,记录一下初步的观感。
如果需要去熟悉框架细节可以参考原文:传送门
重要概念
1.配置文件框架
2.MVC架构
3.路由控制
4.模型
5.视图&模板
看完这个清单,基本上里面的概念都和django中的概念对应得上。
通过mvc方式来组织页面的代码。
通过路由控制模块来分发提交上来的访问。
通过模型来提供对数据库访问的封装。
提供视图&模板来做一些动态网页的显示支持。(django里面叫template)
安装
初始化主页面
1.安装上一个xampp套件
2.将thinkPHP拷贝到xampp的apache的web目录中
3.通过修改入口文件来生成当前
配置文件
可以按照模块的可见性来分配自己模块的配置信息。
配置的分类,以及加载顺序
惯例配置->应用配置->模式配置->调试配置->状态配置->模块配置->扩展配置->动态配置
配置的格式
//项目配置文件
return array(
'DEFAULT_MODULE' => 'Index', //默认模块
'URL_MODEL' => '2', //URL模式
'SESSION_AUTO_START' => true, //是否开启session
//更多配置参数
//...
);
其实就是一个PHP的array
读取
$model = C('URL_MODEL');
框架
工作模式:
http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...]
http://serverName/module/controller/action/param/value/...
都是通过index.php来分发的。
概念
名称 | 描述 |
---|---|
应用 | 基于同一个入口文件访问的项目我们称之为一个应用。 |
模块 | 一个应用下面可以包含多个模块,每个模块在应用目录下面都是一个独立的子目录。 |
控制器 | 每个模块可以包含多个控制器,一个控制器通常体现为一个控制器类。 |
操作 | 每个控制器类可以包含多个操作方法,也可能是绑定的某个操作类,每个操作是URL访问的最小单元。 |
控制器
控制器有些类似于django里面的view。当某个请求上来之后将会回调这个方法。中间就能编写其中的逻辑。
比如编写了一个php代码:
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function hello(){
echo 'hello,thinkphp!';
}
}
当访问了
http://serverName/index.php/Home/Index/hello
地址之后,将会在页面里面打印
hello,thinkphp!
字样。
模型
模型模块主要是用于做数据库相关操作的时候用。设定了连接MYSQL的信息之后就能创建一个和mysql打交道的connection对象。
$connection = array(
'db_type' => 'mysql',
'db_host' => '127.0.0.1',
'db_user' => 'root',
'db_pwd' => '12345',
'db_port' => 3306,
'db_name' => 'demo',
'db_charset' => 'utf8',
);
new \Home\Model\NewModel('new','think_',$connection);
$User = M("User"); // 实例化User对象
$User->where('type=1 AND status=1')->select();
也能指定自己的查询方式
$User = M("User"); // 实例化User对象
$condition['name'] = 'thinkphp';
$condition['status'] = 1;
// 把查询条件传入查询方法
$User->where($condition)->select();
这个模块中也有实现了对于Mongodb的访问模块。
模板
可以支持模板替换方便将前段html分离出来。这个用法和django中的template很像。编写了特殊的替换符号,在php中通过逻辑处理(数据库查询,判断)生成的array数据结构,结合了模板来生成最终的页面。
模板中编写
Hello,{$name}!
php代码中编写
$name = 'ThinkPHP';
$this->assign('name',$name);
$this->display();
// 或者
$data['name'] = 'ThinkPHP';
$data['email'] = 'thinkphp@qq.com';
$this->assign('data',$data);
就能正常显示这些从php中来的变量到页面中。
其中很多的细节在本文中也没细致的写。具体可能还需要再开发的时候通过阅读官网的文档获得更多的信息。
thinkphp框架中很多的关键字,可能自己在开发一个功能的时候,多去阅读手册,说不定自己想要的东西,已经在框架中有实现过了。