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 轻量级框架,国人框架,入门容易
什么是框架:
一堆代码的集合,里边有变量、函数、类、常量,里边也有很多设计模式MVC、AR数据库、单例等
框架可以节省我们50-60%的工作量,我们全部精力都集中在业务层次。
为什么使用框架
l 框架可以帮我们快速、文帝你不敢、高效搭建程序
l 该系统由于框架的使用使得本身的维护性、灵活性、适应客户需求方面得到最大化的增强
l 使用框架的过程使得我们的注意力全部集中业务层面,而无需关心程序的底层架构
【使用框架】
官网: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.php?s=/模块/控制器/方法 兼容模式
具体url地址模式配置(配置文件ThinkPHP/Conf/convertion.php)
URL_MODEL =0/1/2/3 分别对应四种url地址模式
Config.php是我们当前自己项目的配置文件,我们可以通过修改该文件达到配置变量的目的
这个文件在系统运行过程中会覆盖convertion.php的配置变量
Include “convertion.php”;
Include “config.php”;
后引入的文件要把先引入的文件配置变量给覆盖掉
我们系统有兼容4种url地址模式的使用
系统有的时候会自动创建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.引入CSS、js、image
A)以上三样东西,浏览器需要发送单独的http请求
B)引入CSS的时候,以User控制器标志作为当前目录,显然不行
以上目录设置不利于后期维护,例如其中的目录有修改,就需要全部修改,有很多重复劳动
优化后:利用常量把路径给定义好,后期只维护一个常量即可
Tp框架默认引擎的常量使用
{$Think.const.名称}
模板与tp框架整合
1.引静态代码
2.引入css、img、js文件
3.在入口文件地方把css、img、js的路径设置常量
4.在模板中通过常量获取具体的css、img等文件信息
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(“[模块/]控制器标志/操作方法”)实例化控制器对象同时调用指定对象
【框架执行流程分析】
【反射机制】
- ThinkPHP学习笔记1
- thinkphp学习笔记1
- Thinkphp学习笔记(1)
- ThinkPHP学习笔记(1)
- ThinkPHP学习笔记(1) ThinkPHP 安装配置
- ThinkPHP 学习笔记
- thinkphp 学习笔记
- ThinkPHP学习笔记
- ThinkPHP学习笔记
- thinkphp学习笔记一
- ThinkPHP学习笔记
- ThinkPHP学习笔记
- thinkphp 学习笔记
- ThinkPHP学习笔记
- ThinkPHP学习笔记
- ThinkPHP学习笔记
- ThinkPHP学习笔记
- ThinkPHP 学习笔记
- php,python冒泡排序
- Linux BT下载(2)-B编码和种子文件
- Linux下最完整的Samba服务器配置攻略 (新人适用)
- MySQL命令mysqladmin:修改用户密码
- 屏幕适配
- ThinkPHP学习笔记(1)
- zzulioj 1948: GCS的计网学习之路(很水)
- C#第十章上机练习1
- 变态跳台阶
- C#上机练习2
- Eclipse下的AndroidAnnotations的项目导入配置
- MySQL命令grant on:增加新用户并控制其权限
- 排序算法总结
- SQL第十章