您的位置:首页 > 编程语言 > PHP开发

TP框架学习笔记第一天

2017-04-19 17:37 459 查看
此文章为自己书写,在Word上做的笔记,然后拷贝到这上边的,无任何抄袭。另外若是程序有任何问题可以评论,也可私信我。

若是想看整个学习笔记代码和数据库可点击此处(包含个人书写的项目代码及数据库文件)。

第一天概述

1.创建应用

2.四种路由形式

3.控制器调用视图模板

4.已有模板与框架结合

5.创建Admin分组

6.使用常量

7.配置文件

8.两种模式

9.使用smarty引擎

第一天详细内容

1.什么是框架

php框架是许多代码的集合,这些代码是程序结构的代码(并不是业务代码)代码中有许多函数、类、功能类包,框架的代码按照一定的标准组成了一个有机的功能体,这个功能体中包含了许多设计模式如MVC,单例,AR等等。

2.不使用框架开发遇到的问题

(1)代码编写没有统一的规范

(2)程序项目的生命时间特别短,不延续

(3)一个小地方的修改会牵扯到全局变化,牵一发而动全身

(4)不能很好满足客户各方面需求

3.使用框架的好处

(1)框架可以帮助我们快速、稳定、高效搭建程序系统

(2)该系统由于框架的使用使得本身的维护性、灵活性、适应客户需求方面得到最大化的增强。

(3)使用框架的过程中可以使我们的注意力全部集中在业务层面,而无需关心底层架构。

(4)可以节省很多代码的工作量

4.相关框架

(1)zendframework

php语言公司zend发布的官方框架,有许多OOP面向对象内容,功能非常丰富,重量级框架

重量级:(1)语言级别(高级语言OOP)(2)功能丰富

轻量级:(1)语言级别(面向过程或有少许的OOP)(2)功能相对较少但是实用

高级语言:例如java是用类对变量、函数的封装

中级语言:例如C是用变量、函数对中低语言代码的封装

中低级语言:例如汇编语言,比如低级语言再高级一点的语言,是对二进制代码的封装

低级语言:二进制代码语言

(2)Yii

国人(华人)自己开发的框架,名字(xue qiang),重量级框架,纯OOP框架,该框架的特点是把代码的重用性发挥到极致,速度非常快。外企使用最多的框架。

该框架思想来源于symfony、jQuery等。

作者之前是prado框架的核心维护人员,维护该框架3年之久。

(3)cakephp

cakePHP是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该框架的主要目标是让各种层次的PHP开发人员都能快速灵活的开发健壮的web应用。

(4)symfony

symfony是一个基于MVC模式的面向对象的PHP5框架。

(5)ThinkPHP

轻量级框架。内部OOP和面向过程代码都纯在,是国人自己开发的框架。

ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷web应用开发而诞生的。最早诞生于2006年初,原名FCS,2007元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。早期的思想架构来源于Struts,后来经过不断地改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式, 融合了Struts的Action和Dao思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和一些常用操作,单一入口模式等,在模板引擎、缓存机制、认证机制和扩展性方面均有独特的表现。

5.模板文件介绍









6.路由形式

Get方式:

(1)http://网站域名/index.php?m=分组名&c=控制器名&a=方法名

参数m:module,表示分组

参数c:controller,表示控制器

参数a:action,表示具体的请求方法

例如:以http://www.weizai.com/为例,则访问Home分组下的Index控制器下的index方法,则地址可以写成:

http://www.weizai.com/index.php?m=Home&c=Index&a=index

pathinfo路由形式【默认形式】

语法:http://网址域名/index/模块名/控制器名/方法名/参数名/参数值…

例如:以http://www.weizai.com/为例,则访问Home分组下的Index控制器下的index方法,则地址可以写成:

http://www.weizai.com/index.php/Home/Index/index

重写(rewrite)方式

语法:http://网址域名/Home/Index/index/参数名/参数值…

例如:以http://www.weizai.com/为例,则访问Home分组下的Index控制器下的index方法,则地址可以写成:

http://www.weizai.com/Home/Index/index

【注意】

该路由形式是需要配置之后才可以使用的,不配置无法使用。

【配置方法】

(1)需要修改Apache的配置文件



去除配置文件中的rewrite模块前面的注释符:



同时需要修改Apache虚拟主机的配置



需要将AllowOverride设置为All



(2)将.htaccess文件复制到当前站点目录下:



此时配置完成,就可以使用第三个路由形式了。

兼容路由形式

语法:http://网址域名/index.php?s=/模块名/控制器名/方法名/参数名/参数值…

问:上述形式中,有几个参数?

答:参数只有1个,参数是s,因为没有&符号。

例如:以http://www.weizai.com/为例,则访问Home分组下的Index控制器下的index方法,则地址可以写成:

http://www.weizai.com/index.php?s=/Home/Index/index

7.控制器的创建

控制器是以文件的形式存在的,需要创建一个文件。

文件的命名规范(当前版本为例):控制器名(首字母大写)+Controller.class.php

文件里面需要遵循三个步骤:

(1)声明命名空间

(2)引入需要使用的类元素

(3)正式的声明类,并且根据需要来决定是否需要继承其他的类

例如:需要创建商品控制器,命名为Goods

文件命名:GoodsController.class.php



8.模型的创建

在ThinkPHP中,模型的本质也是一个类文件,所以其编写的要求基本上和控制器是一致的。

文件的命名规范:模型名(首字母大写)+Model.class.php

里面代码的三个步骤:

(1)声明命名空间

(2)引入需要使用的类元素

(3)正式的声明类,并且根据需要来决定是否需要继承其他的类

9.视图的创建



视图就是展示给用户看的模板。

存放位置是在对应模块下的View目录下。

例如:需要给Goods控制器对应的方法test,创建模板,则视图文件需要放到View/Goods/test.html。

如果需要在控制器中展示模板/视图文件,则需要在方法的最后调用display方法。

语法:

this−>display();this->display(‘模板文件名称’);//访问其他的模板文件

$this->display(‘控制器/方法’);//访问其他控制器下的模板文件



扩展:将方法中的变量分配到模板中使用的方法。

$this->assign(模板中的变量名,PHP中的变量);



在模板中展示:



10.ThinkPHP中的2种模式

在ThinkPHP中提供了两种模式(模式:不是设计模式)

调试模式/开发模式:是在开发中建议开启的模式。【默认的形式】

生产模式:在项目上线运行的时候建议开启的模式。

切换两个模式的方式需要配置一个配置项。在ThinkPHP中除了配置文件中有配置项,在其他的一些零星的文件中,也存在配置项。

针对两个模式的配置项存在于/index.php中。

配置项:APP_DEBUG



调试模式下的错误:



生产模式下的错误:



11.将现有模板文件与TP框架结合

具体实现步骤:

(1)复制模板文件到View指定目录

(2)复制css,js,img静态资源文件到系统指定目录

(3)把静态资源(css,js,img)文件的路径设置为常量信息(在index.php入口文件设置)

(4)在模板文件中引入静态资源(css,js,img)文件,路径相对入口文件设置

最好设置为绝对地址(相对工作站点虚拟主机目录的绝对地址)

为了后期模板维护方便,通过常量设置静态资源访问目录地址

(5)css文件本身的图片设置,其路径相对于css本身设置

12.创建后台分组页面



将现有的模板文件按照8的步骤与TP框架结合。

TP框架提供的常量:
http://网址/index.php/分组/控制器/操作方法/参数名/参数值…
MODULE:路由地址分组信息(http://网址/index.php/分组)

CONTROLLER:路由地址控制器信息(http://网址/index.php/分组/控制器)

ACTION:路由地址操作方法信息(http://网址/index.php/分组/控制器/操作方法)

SELF:路由地址的全部信息(http://网址/index.php/分组/控制器/操作方法/参数名/参数值…)

MODULE_NAME:分组名称

CONTROLLER_NAME:控制器名称

ACTION_NAME:操作方法名称

这些常量可以直接使用,不用加任何php代码。

13.细节处理

13.1配置文件介绍

(1)ThinkPHP/Conf/convention.php 系统主要配置文件

(2)shop/Common/Conf/config.php 当前shop项目的配置文件

(3)shop/Home/Conf/config.php 当前shop项目Home分组下的配置文件

以上三个配置文件,若存在同名的配置变量,后者覆盖前者。

系统中并不是所有的配置参数都在convention.php文件中。

(1)大部分是在convention.php中定义

(2)在Behavior行为文件里边有定义一部分(例如:SHOW_PAGE_TRACE)

(3)在框架的代码角落里边有零星的一点配置变量(例如:MODULE_ALLOW_LIST)



13.2设置默认分组



13.3框架的两种模式

开发模式和生产模式:

//设置为调试模式

define(‘APP_DEBUG’,True);

define(‘APP_DEBUG’,false);

开发模式(调试模式):

每次请求会加载每个应用程序文件,比较耗费资源,错误提示比较友好。

会自动清除common-runtime.php文件,会依次加载每个需要的文件

生产模式:

该模式比较节省资源,会把请求过程中一些通用程序文件给“编译”到一个文件里边(shop/Runtime/common-runtime.php),这样系统的每次请求加载文件数目就比较少(节省了许多文件打开、关闭功能)

错误信息模糊,不方便调试。

13.4开启smarty模板引擎



将页面的内容改为smarty模板可以解析的代码:



13.5smarty模板{}标记有冲突

{}与css或者js有冲突解决办法:

(1)在{}与内容中间加空格

(2)让{}的左右括号不在同一行

(3)设置literal标记,设置之后内部内容不会被smarty模板解析

(4)将{}这个左右标记进行替换





14.框架的执行流程(了解)

index.php–>./ThinkPHP/ThinkPHP.php–>Think/Think.php–>Think/App.class.php

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息