前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ThinkPHP-PHP开发中的主流框架

ThinkPHP-PHP开发中的主流框架

作者头像
沈唁
发布2018-05-24 15:45:38
2.7K0
发布2018-05-24 15:45:38
举报
文章被收录于专栏:沈唁志沈唁志

PHP 中的框架是什么?

框架就是通过提供一个开发 Web 程序的基本架构,PHP 开发框架把 PHPWeb 程序开发摆到了流水线上。换句话说,PHP 开发框架有助于促进快速软件开发(RAD),这节约了开发时间,有助于创建更为稳定的程序,并减少开发者的重复编写代码的劳动。

框架专门用于为这些常用元素(数据库交互、表示层、应用程序逻辑)提供结构,以便可以花费更少的时间来编写数据库接口代码或者表示层接口,而花费更多的时间来编写应用程序本身。以这种方式分解应用程序,这种架构被称为模型-视图-控制器(Model-View-Controller,MVC)。模型(Model)指数据,视图(View)指表示层,而控制器(Controller)指应用程序逻辑或业务逻辑。

一、PHP 中常见的框架之ThinkPHP

TP 框架(ThinkPHP):

ThinkPHP 框架是 PHP 最常见的框架之一,也是目前市面上的主流框架。ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级 PHP 开发框架 ,是为了敏捷 WEB 应用开发和简化企业应用开发而诞生的。ThinkPHP 从诞生以来一直秉承简洁 实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在易用性、扩展性和性能方 面不断优化和改进,已经成长为国内最领先和最具影响力的 WEB 应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

目前市面上的 TP 框架有两大分支:TP3.X 和 TP5

① ThinkPHP 基于 MVC 的 PHP 框架

                M – Model       模型                   工作:负责数据的操作

                V – View          视图(模板)       工作:负责前台页面显示

                C – Controller  控制器(模块)    工作:描述功能,逻辑上的业务处理

MVC 示意图

② ThinkPHP 核心文件介绍

      ├─ThinkPHP.php     框架入口文件

      ├─Common 框架公共文件

      ├─Conf 框架配置文件

      ├─Extend 框架扩展目录

      ├─Lang 核心语言包目录

      ├─Lib 核心类库目录

      │  ├─Behavior 核心行为类库

      │  ├─Core 核心基类库

      │  ├─Driver 内置驱动

      │  │  ├─Cache 内置缓存驱动

      │  │  ├─Db 内置数据库驱动

      │  │  ├─TagLib 内置标签驱动

      │  │  └─Template 内置模板引擎驱动

      │  └─Template 内置模板引擎

      └─Tpl 系统模板目录

③ url 的 4 种访问方式

1.PATHINFO 模式:http://域名/项目名/入口文件/模块名/方法名/键 1/值 1/键 2/值 2

2.普通模式:http://域名/项目名/入口文件?m=模块名&a=方法名&键 1=值 1&键 2=值 2

3.REWRITE 模式:http://域名/项目名/模块名/方法名/键 1/值 1/键 2/值 2

4.兼容模式:http://域名/项目名/入口文件?s=模块名/方法名/键 1/值 1/键 2/值 2

④ TP 中的几种输出方式

ThinkPHP 中的输出:

a、通过 echo 等 PHP 原生的输出方式在页面中输出

b、通过 display 方法输出(想分配变量可以使用assign 方法)

                c、修改左右定界符

要修改配置文件中的配置项:‘TMPL_L_DELIM’=>'<{‘, //修改左定界符

‘TMPL_R_DELIM’=>’}>’, //修改右定界符

⑤ TP 中最简单实用模型的方式

                M() 等效为 new Model();

                $m=M(‘User’);

                $arr=$m->select();

⑥ 输出模板内容

a、display 方法

        1.display 中没有参数

$this->display();

2.可以带参数

$this->display(本模块文件夹下的其他模板文件);

$this->display(‘index2′);

$this->display(其他文件夹下的模板文件);

$this->display(‘Public:error’);//注意,仅仅需要在 Tpl 下有 Public 文件夹以及其中的 error.html 即可,不需要一定有 Public 模块

b、fetch 方法

获得模板文件中的内容,以字符串形式返回

$content=$this->fetch(‘Public:error’);

c、show 方法

不需要模板文件,可以直接输出模板内容

$content=$this->fetch(‘Public:error’);

dump($content);

$content=str_replace(‘h1’,’i’,$content);

$this->show($content);

⑦ 重定向

$this->redirect(‘category’, array(‘cate_id’ => 2), 5, ‘页面跳转中…’);

参数说明:

第一个参数:要跳转的链接地址

第二个参数:传递的参数,要求格式为数组

第三个参数:等待时间

第四个参数:输出信息

⑧ 字段映射

使用 create 方法完成数据对象的创建,则表单里面文本域名称必须要和数据表的字段名称一致,如果一致,就暴露了数据表里面表结构,带来安安全隐患。就可以使用一个字段映射的功能,设置为和表里面的字段不一致。

该功能需要在自定义模型里面定义

⑨ 模型中连贯操作

语法:$model->方法 1()->方法 2()->方法 n()->select();

⑩ 自动验证

主要是验证表单提交的数据的合法性,验证表单数据的合法性,有两种方式,一种是通过前端 js 代码来验证,一种是数据入库之前的 php 代码验证。在实际开发中,两种方式都要有,前端 js 验证。前端 js 代码用户是可以禁用的,因此要进行 php 代码验证,达到双重验证。

字段验证的方式是集成到模型里面的 create 方法里面,注意在使用 create 方法之前需要将配置文件中的 extension=php_mbstring.dll 打开

实用项:

⑴ 代码流程追踪:在配置文件里面‘SHOW_PAGE_TRACE’=TRUE

⑵ TP 中的事务:

$User->startTrans():开启事务处理

$User->commit()   :如成功,则提交

$User->rollback() :如失败,则回滚

⑶ 模型里面的 trueTableName 属性:

建立一个模型,在默认操作时,是操作的前缀+模型名称的表,可以通过 trueTableName 属性设置变成操作其他的表

(4) TP 中常用的字母函数:

S 函数:缓存管理方法,3.1.2 版本后因 cache 方法并入原 S 方法,所以 cache 方法不再建议使用,用 S 方法即可;

U 函数:U 方法用于完成对 URL 地址的组装,特点在于可以自动根据当前的 URL 模式和设置生成对应的 URL 地址:U(‘地址’,’参数’,’伪静态’,’是否跳转’,’显示域名’);

D 函数:D 方法是用的比较多的,用于实例化自定义模型类,是 ThinkPHP 框架对 Model 类实例化的一种封装,并实现了单例模式,支持跨项目和分组调用,调用格式如下:D(‘项目://模型’,’模型层名称’),方法的返回值是实例化的模型对象。

M 函数:M 方法用于实例化一个基础模型类。M 方法的调用格式:M(‘基础模型名:模型名’,’数据表前缀’,’数据库连接信息’)

注意:M 和 D 的区别:

1、M 不需要自定义模型类,减少 IO 加载,性能较好;

          2、实例化后只能调用基础模型类(默认是 Model 类)中的方法;

          3、可以在实例化的时候指定表前缀、数据库和数据库的连接信息;

A 函数:A 方法用于在内部实例化控制器,调用格式:A(‘项目://模块’,’控制器层名称’)

R 函数:R 方法用于调用某个控制器的操作方法,是 A 方法的进一步增强和补充,R 方法的调用格式:R(‘项目://模块/操作’,’参数’,’控制器层名称’)

C 函数:C 方法是 ThinkPHP 用于设置、获取,以及保存配置参数的方法,使用频率较高

N 函数:N 方法属于计数器方法,被用于核心的查询、缓存统计的计数和统计。但是其实可以用于应用的其他计数用途,用法比较简单,调用格式:N(‘计数位置',’步进值’)

L 函数:L 方法用于启用多语言的情况下,设置和获取当前的语言定义,调用格式:L(‘语言变量',’语言值’)

session 函数:Session 方法用于 Session 设置、获取、删除和管理操作

cookie 函数 :cookie 函数也是一个多元化操作函数,完成 cookie 的设置、获取和删除操作。

TP 特性总结:

1.多表查询非常方便,在 model 里几句代码就可以完成完成多表的关联操作。

2.融合了 smarty 框架技术,使前台和后台独立分开

3.支持多种缓存技术,memcache 技术支持非常好

4.命名规范,模型,视图和控制器严格遵循命名规则,通过命名一一对应

5.类库扩展、驱动扩展、应用扩展、模型扩展、控制器扩展、标签库扩展、模板引擎扩展、Widget 扩展、行为扩展和模式扩展

6.支持多种 URL 模式

7.自动完成表单数据的验证过滤,生成安全的数据对象

8.内置 AJAX 数据返回方法,支持 JSON、XML 和 EVAL 格式返回客户端

9.内建丰富的查询机制,包括组合查询、复合查询、区间查询、统计查询、定位查询、动态查询和原生查询,让你的数据查询简洁高效

10.系统支持多数据库连接和动态切换机制,支持分布式数据库

沈唁志|一个PHPer的成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:ThinkPHP-PHP开发中的主流框架

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PHP 中的框架是什么?
  • 一、PHP 中常见的框架之ThinkPHP
相关产品与服务
分布式数据库 TDSQL
分布式数据库(Tencent Distributed SQL,以下简称 TDSQL)是腾讯打造的一款企业级数据库产品,具备强一致高可用、全球部署架构、高 SQL 兼容度、分布式水平扩展、高性能、完整的分布式事务支持、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档