TP框架基础(一)
【使用框架】
官网:thinkphp.cn. 目前建议使用thinkPHP3.2版本

一、结构目录
》Thinkphp文件夹,是thinkPHP的核心文件,里面的内容是不允许我们修改的
》Public是公有的文件夹,里面可以写自己的东西
》Application 我们建立项目的文件夹(Public和Application里面原有自带的文件可以删除,相当于两个空的文件夹)
》tp文件夹中的index.php 是所有程序的入口文件
》conf->convention.php 配置文件 包含了所有的配置

》thinkphp->conf 文件夹->配置文件,几乎包括关于thinkPHP的所有配置.但是在这个文件夹中不可以修改。如果想要对thinkPHP进行配置的话,需要先在配置里查一下,配置变量的名字后,然后复制到自己项目的配置文件中,更改变量
》library文件夹->包含了几乎所有的核心类,在library文件夹下的think文件夹里
》 Mode文件夹->模型
》Tpl文件夹->模板



【框架项目部署】
部署一个Shop项目,使用tp框架
步骤:
创建入口文件:
1.在ThinkPHP目录下创建一个入口文件index.php,如果有直接使用就可以
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +---------------------------------------------------------------------- // 应用入口文件 // 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',True); // 定义应用目录
define('APP_PATH','./shop/'); // 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php'; // 亲^_^ 后面不需要任何代码了 就是如此简单
》define 定义常量
define('APP_DEBUG',True)
true:开启调试模式,建议开发阶段开启,这样在开发时出错才能报出很详细的错误
false:生产模式,出现错误不会报出详细的错误信息,不利于开发

2.访问入口文件的同时系统会自动把对应的应用目录文件Shop创建出来

(访问入口文件的时候,实际上访问的是默认模块里的默认控制器里的默认方法 )

3.打开Home文件夹

【MVC模式】
M:Model 数据模型层,负责数据操作
V:View 视图层,负责显示视图(就是模板,静态页面)
C:Controller 控制器,实现业务逻辑

MVC模式里,我们访问的不是具体的页面,而是访问的控制器,控制器会找到对应的模板进行显示
【控制器访问及路由解析】
通过url地址get参数找到指定的控制器,并进行对应方法调用请求
http://网址/index.php?m=模块名称&c=控制器&a=方法
以上url地址信息代码不够优雅、不安全。
tp框架url地址可以由以下四种
1.http://网址/index.php?m=XX&c=XX&a=XX 基本get模式 (a代表action操作 )
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地址

thinkphp->conf->convention.php->'URL_MODEL'表示在自动生成路径的时候是按照这种模式生成的,并不是表示访问一定要按照这个方式访问
通过url地址模式我们学习到了以下内容:
1.我们学习到了配置变量(核心配置变量conversion.php、当前应用配置变量config.php)
2.快捷函数U(“模块/控制器/方法”) 根据参数和url模式 创建对应的url地址
3.把框架的模式调整为开发调试模式
》默认的IndexController.class.php控制器中,控制器就是一个类,继承Controller父类,里面的index方法在控制器里称为操作
》访问入口文件的时候,实际上访问的是 默认控制器里的默认方法 ( thinkPHP文件夹中的conf->convention.php )
》'URL_MODEL' = 1 代表的是默认自动生成路径的时候,按照1的路径生成的.在自己的项目中,如果要创建URL的话,是按照1的路径创建
【开发、生产模式】
开发调试模式:系统需要加载大概24个文件 index.php define(“APP_DEBUG”,true);
生产模式:系统只需要加载很少的大概7个文件 在入口文件
index.php中定义: define(“APP_DEBUG”,false);
节省了许多文件的开发、关闭的系统开销,节省资源

如果把入口文件index.php中的开发模式改成生产模式,再访问一遍入口文件index.php 在Shop(项目文件夹)里的Runtime文件夹里会缓存出一个common-runtime.php文件夹,集成了很多文件。如果是生产模式,直接使用这个文件就可以的
要在页面显示trace信息,需要在自己的配置文件中:

》开发的时候建议开启(在自己的项目配置中)
'SHOW_PAGE_TRACE'=>TRUE, 写在配置里,右下角出现的标志,点击会显示一些执行的详细信息
》生产模式状态下,会缓存common-runtime.php文件,在自己创建的Shop项目文件夹下->Runtime->common-runtime.php文件(好多文件集成在这个文件里)
【控制器和对应方法创建】
控制器是MVC模式中的核心,tp默认有一个Index控制器:

Index控制器里面有一个操作方法:Index

我们在访问http://localhost:8080/Thinkphp/index.php入口文件的时候,会默认访问Index控制器下面的Index方法
如果要自己创建一个控制器Login:
1.在\Shop\Home\Controller文件夹下新建一个控制器文件LoginController.class.php
注意:文件命名规则,按照驼峰法命名(创建控制器,控制器的首字母大写 )

2.打开该文件,在里面造控制器Login类

3.如果要自定义操作方法,在控制器Login类里面加一个函数Login():

这样我们就完成了控制器和操作方法的建立,如果要访问我们刚才的Login控制器下的Login方法:

4.控制器中如果要调用视图层中的模板:

这样再次访问,会发现报错:

原因:模板文件没有创建,这时候我们就要去创建模板文件
同一个控制器中可以有多个操作方法,而且每个方法都可以单独访问
》所有控制器的父类Controller 位置:TinkPHP->Library->Think->Controller.class.php
》命名空间 (根据目录建命名空间)
1)tp框架主要有两个根命名空间
1.ThinkPHP\Library (在其他地方使用的根命名空间)
2.Home (如果是在模块里使用的根命名空间)
2)命名空间里用的是反斜杠\
3)例:namespace Home\Controller 代表控制器的命名空间
use Think\Controller (use ThinkPHP\Library\Think\Controller) 代表引用了Think命名空间下的Controller
》同一个控制器下可以有多个方法,且每个方法都可以单独访问
》控制器对应一个模板文件夹,控制器里的每一个方法,对应模板文件夹里的每一个页面。view里的文件夹必须和控制器的名字是一致的,大小写一致、
》命名空间(相当于一个虚拟的文件夹)
》MVC里有一句话叫做:约定胜于配置
》显示模板的方法在controller父类里面,里面有display方法,调用display方法后,给出模板路径$this->display();
》约定:模板的默认名是固定的,根据控制器名在view里建一个模板文件夹,再在文件夹里建一个和操作方法名一致的文件(.html)
框架的作用:有利于在开发的时候有明确的分工
TP框架好处: 有良好的维护性和拓展性。
TP框架基础(一)的更多相关文章
- TP框架基础
什么是TP框架: 一堆代码的集合,里边有变量.函数.类.常量,设计模式MVC.AR数据库.单例等等.全称是Tinkphp框架; 为什么使用框架: 使用框架将全部精力集中在业务层次,节省50-60%的工 ...
- TP框架 基础1
php框架 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格 ...
- tp框架基础知识
作者:黄力军 index.php入口文件:作用,所有tp框架里的内容要想访问文件.都要走index.php文件他是整个程序的入口 Application代表应用程序的目录 所有写的应用程序放这里 ...
- tp框架基础(详细步骤分解,易懂)下
在浏览器中如果要访问操作方法的时候以什么方式来访问 有四种方式 第一种是get方式,第二种是访问路径 这四种方式我们可以通过修改配置文件来改掉url的模式 我们需要来改一下我们的配置文件 在这个路径下 ...
- TP框架基础(四)----添加数据
[数据添加] add() 该方法返回被添加的新记录的主键id值 两种方式实现数据添加 1. 数组方式数据添加 $goods = D(“Goods”); $arr = array(‘goods_name ...
- TP框架基础(三)
[系统常量信息] 获取系统常量信息: 如果加参数true,会分组显示: >系统常量信息里经常用到的是user里的路径 > APP_PATH =>string'./shop/' 项目路 ...
- TP框架基础2
---恢复内容开始--- [空操作和空控制器处理] 空操作:就没有指定的操作方法 空控制器:没有指定控制器 http://网址/index.php/Home/User/login http://网址/ ...
- TP框架基础 (二) ---空控制器和空操作
通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控 ...
- tp框架的详细介绍,tp框架基础
php框架 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一 ...
随机推荐
- C# Task 的用法
C# Task 的用法(转自:http://www.wxzzz.com/683.html#) 其实Task跟线程池ThreadPool的功能类似,不过写起来更为简单,直观.代码更简洁了,使用Task来 ...
- Vbox中Linux虚拟机网络配置(比较实用)
好久没写过东西了,主要大部分都是来自对生活的感悟,很少有实实在在的关于学得有成就感的技术可以“炫耀”,所以也就懒得在这个上面登了. 实验室很早就有位师兄曾在吃饭的路上问过我们这群小弟,你们知道Vbox ...
- js中prototype与__proto__区别
proto(隐式原型)与prototype(显式原型) 显式原型 explicit prototype property:每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数 ...
- hive数据倾斜的解决办法
数据倾斜是进行大数据计算时常见的问题.主要分为map端倾斜和reduce端倾斜,map端倾斜主要是因为输入文件大小不均匀导致,reduce端主要是partition不均匀导致. 在hive中遇到数据倾 ...
- spring boot之actuator简介
当我们的开发工作进入尾声,部署上线之后,对于一个程序而言,可能才刚刚开始,对程序的运行情况的监控要伴随着整个生命周期. 如果这个工作由程序员自己来开发,也未尝不可,但本着不重复制造轮子的思想,我们尽量 ...
- hgoi#20190516
T1-Buying A House 给你一个长度为n的序列a,给你目标房子m,最多花的钱k 如果a[i]为0,这座房子无法购买,否则可以购买,求能买的距离目标房子最近的房子,输出最小距离 两座房子之间 ...
- 什么是 VxLAN?
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. VLAN 和 ...
- Python 图片识别
Tesseract是开源的OCR引擎. 需要安装tesserocr.opencv-python.tesseract-ocr pip install tesserocr pip install open ...
- C++屌屌的观察者模式-同步回调和异步回调
目录 一.概述 1.同步观察者 2.异步观察者 二.效果展示 三.同步观察者 四.异步观察者 五.相关文章 原文链接:C++屌屌的观察者模式-同步回调和异步回调 一.概述 说起观察者模式,也是比较简单 ...
- HDU 4055:Number String(DP计数)
http://acm.hdu.edu.cn/showproblem.php?pid=4055 题意:给一个仅包含‘I','D','?'的字符串,’I'表示前面的数字比后面的数字要小(Increase升 ...