TP框架

ThinkPHP框架-1

1. 框架技术概述

 1.1 框架为我们带来了什么?

A. MVC规划了我们的项目,每种程序都有自己固定的存放位置,升级维护时,能够非常容易的找到对应的程序。

B. 框架中提供了大量的函数和类库。简化开发。

C. 多人协作。

D. 节约培训成本和开发成本。

E. 公司在技术上不再依赖某个大牛。

 

 

劣势:

A. 增加了学习成本。

B. 相对于phphtml混编代码来讲,框架的执行效率会低一点。

 1.2 主流框架介绍

Yii : 美籍华人薛强开发的框架。

laraval : 类似于Linux的开源思想。

CI: 国外的轻量级框架。

Zendframeworkzend公司开发的重量级框架。

ThinkPHP: 国产框架。

 1.3 ThinkPHP框架介绍

A. 相对于其他框架来讲,TP框架比较容易上手。

B. TP框架功能比较强大,能够满足大多数项目的需求。

C. 应用范围广。

D. 有中文的讨论区和技术支持社区。

 1.4 下载

官网: www.thinkphp.cn

下载:

下载ThinkPHP的核心版

下载ThinkPHP的完整版

 

 

 

完整版比核心版多了很多额外的功能,例如:完整版支持smarty模板引擎,还有验证类、文件上传类等扩展类。

 

 

 1.5 TP的目录结构

 

ThinkPHP:是ThinkPHP的核心目录

Index.php: 项目的入口文件。(自己编写)

 

 

进入ThinkPHP之后:

 

 

Common:通用目录,存放了ThinkPHP最核心的底层函数

Conf: 配置目录,存放了配置文件

Lang: 语言包。

Library: 库,ThinkPHP最核心的程序存放位置。

Tpl: 模板处理程序目录。

ThinkPHP.phpThinkPHP的核心文件,项目中必须引入该文件。

 1.6 项目部署

ThinkPHP的核心目录复制到项目目录中。

 

 

 

 

编写index.php唯一入口文件:

 

 

访问测试:

 

 

看到如下界面,则说明部署成功。

 

 

再来观察tp(项目)目录

 

 

ApplicationTP自动创建的目录,我们自己编写的项目程序都必须放在该目录下。

 

Application目录结构:

 

 

第一层:oa 项目根目录

 

第二层:

Application: 应用程序目录,我么自己编写的MVC程序都存放在该目录下

ThinkPHP: ThinkPHP的核心目录

Public: 存放jscssimage的目录

Index.php: 唯一入口文件

 

第三层:

Admin/Home: 程序的前后台

Common:  存放项目的配置文件和公共函数的目录

Runtime: 运行时目录,存放缓存文件和日志文件。

 

第四层:

Home/Admin:

Controller : 控制器程序存放目录

Model: 模型程序存放目录

View: 视图程序存放目录

Conf: 当前模块配置文件存放目录

Common: 当前模块可使用的函数程序存放目录

 

Common:

Common: 前后台(Home/Admin)都可以使用函数存放目录

Conf: 前后台(Home/Admin)都可以使用配置文件存放目录

Runtime

Cache: 控制器和模板编译后的缓存文件

Data: 数据表缓存文件存放目录

Logs: 日志文件目录

Temp: 缓存文件存放目录

 

 

 

问题:如何学习TP框架?

1) URL访问模式。

2) 控制器的写法。

3) 视图的写法。

4) 模型的写法。

5) 扩展类的用法。

2. URL访问模式和控制器

 2.1 URL解析

TP的核心思想: 从URL中接收要实例化的控制器的名称和对应的方法名称。在唯一入口文件中进行实例化,并且调用对应的方法。

 

TP的全URLlocalhost/tp/index.php?m=Home&c=Index&a=index

 

 

修改上图的index方法,再访问localhost/tp/index.php?m=Home&c=Index&a=index

 

 

访问结果:

 

 2.2 控制器的基本写法

存放位置: application/Home(Admiin)/Controller

文件命名: 控制器名称+Controller.class.php   例如:IndexController.class.php

   TestController.class.php

控制器内部编写规则: 三步

1) 声明当前控制器的命名空间

2) 引入控制器的基类

3) 编写控制器的具体内容,需要继承Controller.class.php的基类

 

案例1) : 在Home模块下,创建一个Goods控制器,并编写addindex两个方法。

① 在Home/Controller 下创建GoodsController.class.php文件

② 声明命名空间

③ 引入控制器基类

④ 编写控制器内容,并集成控制器基类

 

 

访问测试:

 

 

案例2): 在Admin模块下,创建User控制器,编写一个index方法

 

访问测试:

 

 2.3 命名空间

PHP中,不允许常量、方法、类重名。 一旦重名会报一个“致命错误”。

在项目越做越大的情况下,类、方法、常量重名,经常会出现重名的情况。

 

 

访问结果:

 

 

 

解决该问题的方法:

1) 使用后缀

2) 使用命名空间

 

 

使用命名空间的方法:

① 为类、常量、方法,定义命名空间

 

 

② 在使用类的时候,引入命名空间;或者使用 \空间名\类名

 

 

 

改写控制器,使用从根空间开始指定空间路径的方式继承控制器基类

 

 

TP中使用自动加载技术,可以自动引入Controller.class.php基类。

 2.4 调试模式和生产模式

调试模式: 在开发过程当中使用的模式,可以显示比较详细的错误信息。

生产模式: 在项目上线之后使用的模式,有统一的错误信息。

 

测试:

 

 

开启调试模式:

 

 

再次访问:

 

 

在开发阶段,必须开启调试模式。

 

关闭调试模式的方法:

 

 2.5 默认访问

Localhost/tp/index.php

http://localhost/tp/index.php?m=Home&c=Index&a=index

 

设置默认访问的内容:

 

 

修改默认访问项:

 

 

再次访问:

 

 

每个目录下都有一个index.html文件,该文件的作用是什么?

防止用户直接访问目录结构。

 2.6 配置文件

TP项目中一共有三/四个配置文件:

惯例配置: ThinkPHP/Conf/convention.php

项目配置: application/Common/conf/config.php

模块配置: application/Admin(Home)/Conf/config.php

 

 

 

 

 

影响范围: 惯例配置 >项目配置 > 模块配置

优先级: 模块配置 >项目配置  > 惯例配置

 

建议:不要直接修改惯例配置。修改项目配置或者模块配置均可。

 

案例:调整默认访问的控制器方法。

 

 2.7 URL访问模式

TP中有4种访问模式:

1) 普通模式: localhost/index.php?m=Home&c=Index&a=index

缺点: URL地址中显示的内容过多,安全性比较差

 

2) pathinfo模式: localhost/index.php/Home/Index/index

优点:简化了URL地址,在一定程度上也能混淆地址的原意。

 

3) rewrite模式: localhost/Home/Index/index

优点:将URL地址以目录结构的形式展示出来。

  以静态化形式显示,有利于SEO

 

使用rewrite模式需要进行2步操作:

① 在apache中开启rewrite模块, 修改apache配置文件(httpd.conf

 

② 将源码包中的.htaccess文件复制到项目的根目录

 

 

再次测试:看到正常结果

 

 

4) 兼容模式: localhost/tp/index.php?s=/Home/Index/index

某些古老的主机或者apache没有开启pathinfo支持,所以pathinforewrite模式都不能使用。 只能使用兼容模式。

 

 

主要使用的两种方式: pathinfo(默认模式)、rewrite模式(个人更建议大家使用)。

 

如何来设置使用哪种模式?

 

 

// 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE  模式); 3 (兼容模式)  默认为PATHINFO 模式

 

设置默认访问模式为2

 

 

 

测试:在设置了 URL_MODEL之后,4种访问模式,依然都能够使用。

URL_MODEL的目标并不是限制只能使用哪种访问模式。

主要目标是和U方法配合来输出URL地址。

 

 

 

 

U方法的使用方式:

 

① 在控制器中使用:

 

 

访问结果:

 

 

 

② 在视图中的使用方式。在后面叙述。

 

 

案例:U方法和URL_MODEL配合显示地址:

 

 

 

显示结果:

 

 

URL_MODEL => 2

 

 

.html后缀是哪来的?

 

 

修改配置项:

 

 

3. 视图--TP内置模板引擎

 3.1 什么是视图

用户最终能够看到页面就是视图。

 3.2 创建视图

在控制器中使用display方法调用视图。

Display方法是Controller基类当中定义的好的方法。

 

测试:

 

 

 

 

保存位置:application/Admin(Home)/View/控制器名/

文件名称:和方法同名。

 

案例1) Viewtest控制器中,index方法调用视图

 

 

创建视图文件:

 

Home/view/下创建Viewtest目录。

 

 

访问结果:

 

 

案例2) Admin/User/add调用视图

 

 

Admin/View 下创建User目录

再在User目录下创建index.html文件

 

 

访问结果:

 

 

 3.3 控制器中调用视图

Display方法:

$this->display() : 不给任何参数是,就会调用和控制器方法同名的视图文件

$this->display(‘add’) : 调用当前控制器下add方法所对应的视图。

$this->display(‘Index/index’) :调用Index控制器下的index方法所对应的视图

$this->display(‘Admin@User/index’) :调用Admin模块下,User控制器中index方法对应的视图

 

 

 

 

Fetch方法: 获取视图文件中的内容,但是不输出

 

 

 

Fetch方法和display方法对比:

Display方法比fetch方法多的功能就是进行输出。

 3.4 模板替换

在视图文件中使用cssjsimage

 

 

测试:

 

 

结果:

 

 

使用__PUBLIC__ 替换模板中css的路径:

 

 

add.html视图中引入css样式:

 

 3.5 模板注释

TP模板注释方式:

① 单行注释:

② 多行注释:


TP
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值