A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 爱编码的J 于 2017-8-14 15:16 编辑

前言:因为目前市面上的PHP框架较多,所以楼主打算整理一些主流框架的介绍,用于给大家学习交流。在接下来的一段时间内,会持续性的为大家奉上相应的框架介绍,本次介绍的是PHP入门级的框架,也是目前PHP用的比较多的一个框架TP3.X

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.系统支持多数据库连接和动态切换机制,支持分布式数据库









评分

参与人数 1黑马币 +5 收起 理由
绮丽 + 5 很给力!

查看全部评分

12 个回复

倒序浏览
66666666666666666666
回复 使用道具 举报
写的很详细,点赞
回复 使用道具 举报
哇,很详细
回复 使用道具 举报
66666666666{:8_469:}
回复 使用道具 举报
66666666666666666666666666
回复 使用道具 举报
6666666
回复 使用道具 举报
看起来很厉害的样子
回复 使用道具 举报
PHP是世界上最美的语言
回复 使用道具 举报
已收藏,这样的干货再来的猛烈些吧!
回复 使用道具 举报
我竟然没有留言!!
回复 使用道具 举报
PHP是世界上最好的语言
回复 使用道具 举报
写的很详细,点赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马