【PHP框架】之ThinkPHP
来源:互联网 发布:手机通话变声软件 编辑:程序博客网 时间:2024/06/10 06:54
ThinkPHP 框架是首款中国人自己开发的PHP框架,它诞生于2006年,2007年正式发布并成型,由于采用了MVC模式进行整体设计,整个框架可以快速的生成CMS网站,如OA系统,个人网站,新闻发布系统等。下面介绍开发的简单流程和关键点。
- ThinkPHP 下载
- ThinkPHP 结构
- 文件结构
- 配置结构
- MVC 结构 与快捷方法
- 控制器的定义
- 模型的定义
- 视图的定义
- volistforeachif 标签
- 标签函数的定义
- 快捷方法
- U方法
- I 方法
- M方法
- D方法
ThinkPHP 下载
首先下载ThinkPHP完整版(http://www.thinkphp.cn),下载完成后,放置到PHP服务器(如PHPStudy等),打开框架的入口地址index.php, 关键代码如下:
// 引入ThinkPHP入口文件require './ThinkPHP/ThinkPHP.php';
入口地址加载了模板的核心文件ThinkPHP.php文件。
ThinkPHP 结构
文件结构
ThinkPHP /Application - 应用目录 |-/Admin - 后台目录 (主要) 用户自行添加 |-/Common - 配置文件目录 (主要) |-/Home - 前台目录 (主要)系统自动生成 |-/Runtime- 系统内置运行库 /Public - 公共资源目录,如CSS/JS代码、图片等 /ThinkPHP - 框架核心部分
配置结构
框架的核心部分包括ThinkPHP\Library\Think 目录下的几个文件,包括Model.class.php、 View.class.php、Controller.class.php。它们是所有MVC模式的类函数的父类。实现的业务逻辑要继承这些父类方法。
另外在ThinkPHP\Conf 目录下的Convention.php 定义了系统内置的函数和一些配置,包括数据库连接的配置。如果修改这些配置,由于Convention.php定义的是全局的配置和函数,所以要到应用目录下的局部配置文件config.php中去修改,不要在Convention.php中修改。
/* 数据库设置 */ 'DB_TYPE' => '', // 数据库类型 'DB_HOST' => '', // 服务器地址 'DB_NAME' => '', // 数据库名 'DB_USER' => '', // 用户名 'DB_PWD' => '', // 密码 'DB_PORT' => '', // 端口 'DB_PREFIX' => '', // 数据库表前缀 'DB_PARAMS' => array(), // 数据库连接参数 'DB_DEBUG' => TRUE, // 数据库调试模式 开启后可以记录SQL日志 'DB_FIELDS_CACHE' => true, // 启用字段缓存 'DB_CHARSET' => 'utf8', // 数据库编码默认采用utf8 'DB_DEPLOY_TYPE' => 0, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 'DB_RW_SEPARATE' => false, // 数据库读写是否分离 主从式有效 'DB_MASTER_NUM' => 1, // 读写分离后 主服务器数量 'DB_SLAVE_NO' => '', // 指定从服务器序号
MVC 结构 与快捷方法
以建立前台为例,后台设计类似与前台。前台的文件目录结构如下
Home - 前台入口目录 -Conf - 前台配置目录 可以放置数据库连接的配置项目 -Common - 前台配置函数 -Controller -控制器目录 -Model -模型目录 -View -视图目录
定义一个Test控制器的例子如下:
控制器的定义
<?php // 申明命名空间 namespace Home\Controller; // 导入父类的命名空间 use Think\Controller; class TestController extends Controller{ //定义一个test方法 public function test(){ phpinfo(); } }
根据以上的定义的控制器,可以从浏览器上访问这个控制器,访问的地址是http://localhost/index.php/Home/Test/test (假设服务器的地址是localhost,且端口设置为80)
模型的定义
在ThinkPHP中,模型的定义往往和数据库有关,我们这里连接的数据库为MySQL.定义的模型的如下:
<?php // 申明命名空间 namespace Home\Model; //引入父类的命名空间 use Think\Model; class UserModel extends Model{ // 模型端验证表单的正确性 protected $_validate = array( // 默认情况下用正则进行验证 array('verify','require','验证码必须!'), // 在新增的时候验证name字段是否唯一 array('name','','帐号名称已经存在!',0,'unique',1), // 当值不为空的时候判断是否在一个范围内 array('value',array(1,2,3),,2,'in'), // 验证确认密码是否和密码一致 array('repassword','password','确认密码不正确',0,'confirm'), // 自定义函数验证密码格式 array('password','checkPwd','密码格式不正确',0,'function'), ); }
视图的定义
视图是为了显示控制器的内容,默认情况下,视图HTML文件应该放在Home/View/Test/test.html. 其中Test目录与控制器的名称相同(TestController 除掉Controller),test.html文件名与方法名test相同,这样相同可以顺利找到对应的视图。
test要显示控制器的方法,要使用到ThinkPHP 定义的模板标签。默认情况下,控制器中的对象方法在HTML使用要使用如下格式:{$对象名}
对于快捷函数要使用的格式如下:{:U(‘test’)}(获取test方法的路径地址)
volist/foreach/if 标签
<volist name="对象名" id="vol">....{$vol.成员对象名}...</volist> <foreach name='对象名' item='fo'>.......</volist> <if condition=''>...<elseif condition=''/>...<else/>... </if>
注意:css/js 文件无法解析ThinkPHP 标签,只能在HTML 文件中使用。
标签函数的定义
通过对控制器中的对象进行一定的函数封装,可以输出适合用户的需求的内容。例子如
输出10个* ,其中10这个参数是控制器传过来的参数。
//控制器端 public function test(){ // 赋值一个变量 $data=10; // 传递参数到模板视图文件中 $this->assign('data',$data); // 展示模板 $this->display(); } //html模板端 <html> ...... <body> // 格式为{$变量|函数名称=参数1,参数2}(str_repeat是PHP内置函数,它需要2个参数,###表示参数为变量本身) {$data | str_repeat='*',###} </body> </htm>
快捷方法
ThinkPHP 定义了大量的快捷方法,其中常用的快捷方法包括,U方法、I方法、M方法、D方法
U方法
U方法主要是获取控制器方法的地址,在ThinkPHP中大量使用,如表单提交、跳转等,他的格式如下
U(‘控制器名称/方法名’)(控制器名称为除掉Controller的类名),在同一个控制器,控制器名称可以省略。
即U(‘方法名’)
I 方法
I方法主要是获取表单提交的内容,常用的在表单提交上,如I(‘post.’)获取所有post 提交的表达所有内容,
I(‘post.id’)获取表单中id对象的值。 I(‘get.t’)获取get方法提交的t对象值。如http://localhost/index.php/Home/Test/test/t/300, I(‘get.t’) 获取值300。
M方法
M方法是用于数据库对象的实例化,它主要是实例化父类模型,即数据库表,所以它的格式为 M(‘数据库表名’)。
D方法
D方法是用于实例化模型对象,它主要实例化定义的模型,所以它的格式为 D(‘定义的模型名称’)
- END
- PHP框架之ThinkPHP
- 【PHP框架】之ThinkPHP
- PHP框架之ThinkPHP研究(0)
- PHP之thinkphp框架路由解析
- PHP框架二:ThinkPHP
- PHP框架之ThinkPHP的学习总结(1) AJAX
- THINKPHP框架之控制器
- ThinkPHP框架之模型
- ThinkPHP框架之视图
- ThinkPHP框架之视图
- PHP框架之ThinkPHP的学习总结(2)ThinkPHP + Discuz 整合方法
- PHP中MVC框架ThinkPHP
- php导出excel (thinkphp框架)
- ThinkPHP框架之快速入门
- ThinkPHP框架之实用项
- ThinkPHP框架学习之CRUD
- ThinkPHP框架之快速入门
- PHP之thinkPHP(一)
- JSON简介
- KMP算法
- Idea搭建整合SSH框架(Maven管理)
- SVN 安装和基本使用教程
- BZOJ 2561: 最小生成树 最小割
- 【PHP框架】之ThinkPHP
- linux的dns高速缓存
- Java 下的函数对象
- 树的基本知识点(未完)
- 工作中部分写过的css样式
- ZigBee CC2530 Z-Stack 20 广播通信
- Java 8的新特性
- HAUTOJ 1280: 诡异的迷宫
- Python,2017第一语言