2017.1.28-2017.1.31
thinkPHP框架–初级
什么是框架?
- 特征1:是一堆代码的集合
- 特征2:是一个半成品应用
特征3:包含了一些优秀的设计模式
定义:框架是一堆包含了常量、方法和类等代码的集合,它是一个半成品的应用,只包含了一些项目开发时候所使用的低层框架,并包含业务逻辑,框架还包含了一些优秀设计模式。
什么是MVC?
MVC是一个设计模式。它强制将用户的输入、逻辑、输出相分离,将整个项目分为三个部分:控制器(C)、模型(M)、视图(V)
thinkPHP版本
3.2.3
官网:http://www.thinkphp.cn/
解压后(完整版)
ThinkPHP文件夹结构
第一次应用
- 将下载的ThinkPHP文件夹和index.php文件复制到站点位置
通过浏览器访问站点目录
结果:可以从浏览器看到一个(:,而且在站点目录下自动生成一个Application文件夹,目录结构如下图所示。
HOME文件结构:
创建控制器
命名规则:控制名(英文首字母大写)+Controller关键字+.class.php
<?php
//定义命名空间
namespace Home\Controller;
//引用父类控制器
use Think\Controller;
//定义控制器并继承父类
class DemoController extends Controller {
public function index(){
echo 'hello world!';
}
}
访问:localhost\项目名\index.php\Home\Demo\index
路由形式
普通形式路由(get形式路由)
路由形式:http://网址/入库文件?m=分组名&c=控制器名&a=方法名&参数名=参数值
pathindo路由形式(默认)
路由形式:http://网址/入口文件/分组名/控制器名/方法/参数名1/参数值1/参数名2/参数值2
rewrite路由形式(需配置)
路由形式与默认形式相比少了入口文件
兼容形式
路由形式:http://网址/入口文件?s=/分组名/控制器名/方法名/参数名1/参数值1
分组
定义:一般项目会根据某个功能的使用对象来区分代码,这个时候放到一起之后会形成一个文件夹,这个文件夹就可以称之为分组。分组就是我们通常所指的平台(前台、后台)
例如在刚部署好的thinkPHP系统中home目录就是一个分组目录。后期如果需要使用更多的分组,则需要自己去创建分组。
步骤:参考home分组,重新创建一个新的目录,在其中依照home中的结构,创建相应的目录即可。
U方法
语法格式:U("URL路径",参数数组)
例如:
访问当前控制器下的index方法,可使用U("index");
访问Index控制器下的index方法,则用U("Index/index");
当然也可以指定分组和传递参数
系统跳转方法
成功跳转
$this->success(跳转提示,跳转地址,等待时间);
失败跳转
$this->error(跳转提示,跳转地址,等待时间);
跳转提示参数必须要有,后面的地址和时间可以没有,如果没有指定跳转地址,则跳转到上一页
视图的创建
创建的位置需要在分组目录下的View目录下与控制器同名的目录中。
例如Test控制器中的login方法,需要一个模板,则该模板文件login.html需要放到View/Test/login.html
模板展示
$this->display(); //展示当前控制器下与当前请求方法名称一致的模板文件
$this->dispaly('模板文件名[不带后缀]'); //展示当前控制器下的指定模板文件
$this->display('View目录下的目录名/模板文件名[不带后缀]'); //展示指定控制器目录下的指定模板文件
模板常量
__MODULE__:表示从域名后面开始一直到分组名结束的路由
__CONTROLLER__:表示从域名后面开始一直到控制器名结束的路由
__ACTION__:表示从域名后面开始一直到方法名结束的路由
__PUBLIC__:站点根目录下的Public目录的路由
__SELF__:表示从域名后面开始一直到路由的最后(如果没有参数,则__SELF__和__ACTION__所表达的内容是一样的)
自己配置
在当前分组的Conf/config.php中配置
模板内容获取方法
$this->display(); //展示模板
$this->fetch(); //获取模板(有返回值)
视图中的注释
普通的html注释
<!-- 注释内容 -->
thinkPHP中的行注释
{//注释内容}
thinkPHP中的块注释
{/*块注释内容*/}
thinkphp中的注释和普通的html注释区别
普通的html注释属于客户端注释,会在浏览器的源码中输出;而thinkPHP的注释属于服务端注释,不会被浏览器输出
一、二维数组的输出
中括号形式
{$array[key]}
点形式
{$array.key}
对象输出
箭头形式
{$o->id}
冒号形式
{$o:id}
注意没有点形式
中文乱码
为了在后期使用中文的时候不乱码,可以在入口文件(index.php)中添加一个header声明
header('Content-Type:text/html;charset=utf8');
系统变量
- Think.server:等价于 _SERVER,获取服务器的相关信息
- T