ThinkPHP学习笔记(1)

来源:互联网 发布:网络成瘾的心理成因 编辑:程序博客网 时间:2024/05/16 01:45

ThinkPHP

 

php框架

真实项目开发步骤:

1.多人同时开发项目,协作开发项目、分工合理、效率有提高(代码风格不一样、分工不好)

2.测试阶段

3.上线运行

4.对项目进行维护、修改、升级(单人维护项目、十分困难,代码风格不一样)

5.项目稳定的运行阶段

6.项目停止运行(旧项目的人员已经全部离职,新人开发新项目)

 

问题:

1.多人开发项目,分工不合理(html PHP mysql)

2.代码风格不一样,后期维护困难

3.项目生命周期十分短,项目生命没有延续性,造成资源浪费、人员浪费

4.项目不能很好适应客户需求,牵一发而动全身

 

 

其他相关框架

1.zendframework  zend php语言公司发布的官方框架,重量级(功能多)

2.Yii  美国华人开发的框架,xue qiang,qiang,重量级框架,纯OOP框架

3.CI   CodeIgniter 轻量级框架,开发速度快,部署灵活

4.cakephp 外国框架,重量级,速度慢

5.symfony 外国重量级框架

6.ThinkPHP 轻量级框架,国人框架,入门容易

 

什么是框架:

    一堆代码的集合,里边有变量、函数、类、常量,里边也有很多设计模式MVCAR数据库、单例等

框架可以节省我们50-60%的工作量,我们全部精力都集中在业务层次。

 

为什么使用框架

框架可以帮我们快速、文帝你不敢、高效搭建程序

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

使用框架的过程使得我们的注意力全部集中业务层面,而无需关心程序的底层架构

 

 

【使用框架】

官网:www.thinkphp.cn

 

 

 

使用ThinkPHP3.2.3完整版

源代码目录介绍

 


 

 

【项目框架部署】

Shop  商城项目

Book  图书管理系统

Car  汽车销售系统

三个项目可以使用一个公共的tp框架

 

步骤:

1.创建一个入口文件index.php

2.项目自动创建目录

 

3.访问入口文件的系统会自动把对应的文件创建出来

 

 

【控制器和对应方法的创建】

 

 

【路由解析】

通过url地址get参数找到制定的控制器,并进行对应方法调用请求

http://网址/index.php?m=模块名称&c=控制器&a=方法

以上utl地址信息代码不够优雅、不安全

 

Tp框架url地址可以有以下四种

1.http://网址/index.php?m=模块名称&c=控制器&a=方法基本get方法

2.http://网址/index.php/模块/控制器/操作方法路径模式pathinfo模式

3.http://网址/模块/控制器/操作方法 rewrite重写模式

4..http://网址/index.phps=/模块/控制器/方法  兼容模式

 

具体url地址模式配置(配置文件ThinkPHP/Conf/convertion.php)

URL_MODEL =0/1/2/3  分别对应四种url地址模式

 

 

 

Config.php是我们当前自己项目的配置文件,我们可以通过修改该文件达到配置变量的目的

这个文件在系统运行过程中会覆盖convertion.php的配置变量

Include “convertion.php”;

Include “config.php”

后引入的文件要把先引入的文件配置变量给覆盖掉

 

我们系统有兼容4url地址模式的使用

 

系统有的时候会自动创建url地址,它会根据当前模式进行url地址创建,使用U()函数创建url地址;

 

在入口文件index.php调整当前模式为开发调试模式

 

 

通过url地址模式我们学习到了以下内容

1.我们学习到配置变量(核心配置变量convestion.php、当前应用配置变量config.php)

2.快捷函数U(“模块/控制器/方法”)根据参数和url模式,创建对应的url地址

3.把框架的模式调整为开发调试模式

 

【开发、生产模式】

开发调试模式:系统需要加载24个文件,index.php define(“APP_DEBUG”,true);

生产模式:系统只需要加载7个文件,index.php define(“APP_DEBUG”,false);

节省了许多文件的打开、关闭的系统开销,节省资源

 

 

观察系统运行过程中生成的日志文件:

1.做变量配置,convention.php,config.php

2.Tp框架配置变量:convention.php  Behavior行为文件 程序灵活设置

   Behavior 行为:ThinkPHP/Library/Behavior/*

   ShowPageTraceBehavior.class.php

 

 

 

【控制器调用视图view模板】

 

 

 

 

控制器和模板的关系

通常:在view目录通常会有一个与控制器标志一样的目录,里边有具体的模板文件

     例如GoodsController.class.php控制器在view目录有Goods目录,里面有Goods控制器对应的模板文件。

 

【视图模板与项目整合】

1.引入静态代码

2.引入CSSjsimage

  A)以上三样东西,浏览器需要发送单独的http请求

  B)引入CSS的时候,以User控制器标志作为当前目录,显然不行

以上目录设置不利于后期维护,例如其中的目录有修改,就需要全部修改,有很多重复劳动

优化后:利用常量把路径给定义好,后期只维护一个常量即可

 

Tp框架默认引擎的常量使用

{$Think.const.名称}

 

模板与tp框架整合

1.引静态代码

2.引入cssimgjs文件

3.在入口文件地方把cssimgjs的路径设置常量

4.在模板中通过常量获取具体的cssimg等文件信息

5.css文件本身的图片路径设置正确(获取图片的相对文职是本身自己的css文件)

 

 

url地址大小写设置】

config.php里面对url大小写敏感进行设置

 

 

引入文件:include “hello.php”; include “Hello.php”;实际都会把指定文件找到hello.php

Tp框架本身自己做了额外设置:include“hello.php”; include “Hello.php”; 表示需要引入两个不同的文件

 

 

 

【空操作和空控制器使用】

空操作:就是没有指定的操作方法

空控制器:就是没指定控制器

http://网址/index.php/Home/User/login

http://网址/index.php/Home/User/hello 空操作

http://网址/index.php/Home/beijing/login 空控制器

 

空操作

 

 

 

一般网站出于安全考虑不给用户提示任何错误信息

空操作本质意思:一个对象(控制器)调用本身不存在的方法

OOP里边,对象调用本身不存在的方法,出于用户体验比较好的角度考虑,我们可以在类里面制作一个魔术方法function __call();

 

 

 

空操作有两种解决方案:

(1)在对应的控制器里面制作一个方法,,名称为“_empty”,这个控制器的空操作都会自动执行该方法(推荐使用)

(2)给空操作的名称制作一个同名的模板出来,系统会自动调用

 

 

空控制器

http://www.1116.com/shop/index.php/Home/nanning/login

 

空控制器:在实例化控制器对象的时候,没有找到指定的类

什么时候实例化控制器对象:ThinkPHP/Library/Think/App.class.php

熟记文件:

Index.php 入口文件

ThinkPHP/ThinkPHP.php 框架核心文件

ThinkPHP/Library/Think/Think.class.php 框架核心文件

ThinkPHP/Library/Think/App.class.php 框架应用文件

   App.class.php内部包括控制器对象创建,以及对象调用指定的方法呈现内容

 

 

 

空控制器处理方案:可以再制作一个控制器,名称为EmptyController.class.php

在该控制器内部其实只需要制作一个_empty方法即可

 

 

 

【项目分组】

系统有前台用户操作界面,

系统还有后台供公司内部人员使用维护平台

两者在使用的过程就是对“控制器”、“视图模板”、“模型”的操作

 

为了系统开发方便,集代码部署更加合理,我们的控制器、view视图等前后台文件不要混

在一起,要在物理结构上给分开

 

http://网址/index.php/Home/控制器/操作方法 访问Home分组的控制器及指定操作

http://网址/index.php/Admin/控制器/操作方法 访问Admin分组的控制器及指定操作

 

 

【后台登陆页面与框架的整合】

 

 

 

【跨控制器调用】

一个控制器在执行的时候,可以实例化另一个控制,并通过对象访问器指定方法。

跨控制器调用可以节省我们代码的工作量。

 

A(“[模块/]控制器标志”)实例化控制器对象

R(“[模块/]控制器标志/操作方法”)实例化控制器对象同时调用指定对象

 

【框架执行流程分析】

 

 

【反射机制】

0 0