ThinkPHP5.0学习

特点:

1.ThinPHP是免费开源的,快速简单的,面向对象的,轻量级PHP开发框架
2. 2006年初创立,遵循Apache2开源协议发布
3. 秉承简洁实用的设计原则,注重易用性
4.拥有众多的原创功能和特性,在易用性,扩展性和性能封面不断优化和改进

5.成为国内最领先和最具影响力的WEB应用开发框架

一 开发环境安装
PHP>=5.4.0
PDO MbString CURL PHP Extension
Mysql 5.5以上

  Apache Nginx

安装三种方式

  1. git 2 composer方式 3.官网下载

二 MVC介绍

初探TP5—URL路由—请求响应–模板视图
MVC优势:耦合性低,重用性高,可维护性高,有利于软件的工程化
MVC的变形
1.五Model模式的web开发
2 五View模式的Api接口开发

3.Model再分层和Controller再分层

三 Tp5目录和规范

1.目录结构

-application 应用目录(几乎整个项目的内容都写在这里)
|-index(这里的文件夹tp5叫做模块-----一般是前台模块,也可以根据需要需求修改成其他(例如:home),需要修改配置文件,修改默认模块、控制器、操作) 【注】:TP5默认只有一个index文件(模块)和一个控制层(conrroller),我们在写代码的时候会自己新建一个model和view,这样就组成了这个Index模块儿的MVC(controller控制层,model模型层,view视图层),如需后台(一般来说都需要),则需要新建一个后台模块(admin)
|-controller(控制层)
|-model(模型层)
|-view(视图层)
|-admin(后台模块)
|-controller(控制层)
|-model(模型层)
|-view(视图层)

|- command.php 是控制台的配置文件,当我们用命令行执行thinkphp的时候,它会读取command.php的配置

|- common.php 它是项目的公共文件,当我们编写一些通用函数的时候,比如我们写一个函数,想在所有的模块儿中都能调用,那么我们就可以把函数写在改文件中,它就可以注册到全局,在任何地方都可以调用

|- config.php 它是应用的配置文件,整个用用都读取这个配置,也就是admin模块儿和index模块儿会通用这个配置

|- database.php 它是数据库配置文件,如果我们需要连接数据库,那么我们只需要修改database.php的配置就可以了

|- route.php 它是路由文件,当我们想对URL进行美化,那么我们就可以修改此文件,对其增加一些路由配置,就可以达到美化的效果

|- tags.php 它是应用行为扩展文件,在thinkphp中,它为我们埋下了很多钩子,我们可以对框架进行扩展,而不需要修改框架本身的源码,我们需要在某一个钩子上注册某些函数,或者是注册某些行为,来通过行为来改变框架的执行流程
|-extend 目录,这个目录是我们下载第三方库时候使用的,当然我们不是通过composer来下载的,比如说我们有一个第三方库,我们用着比较好用,但是它没有composer包,我们就可以将类库下载到extend目录,之后我们修改一下命名空间,就可以直接在我们的应用中使用
|-publiic 我们网站的根目录,也就是说我们网站根目录下所有的这些文件都是允许访问的
|-static 主要用来放静态文件,比如说css,js,图片等等
|-index.php 整个网站或整个应用的入口文件,所有的请求都会经过index.php之后再去转发
|-router.php 它是框架快速启动的测试文件,比如你本地没有安装Apache,只安装了PHP,那么我们可以同过,PHP内置的workserver来启动,通过这个文件,我们就可以启动这个框架

|-runtime 它是网站运行中的缓存文件,它包括日志,缓存和编译文件等等。
|-thinkphp 它是框架文件,也就是说thinkphp5的框架都在里边
|-lang 里边是语言包
|-library 目录是框架的核心,它里边有think(它是整个框架的核心文件)和traits(它是类库的扩展)两个目录
|-think Think 类库包目录
|-traits 系统 Traits 目录
|-tpl 是我们框架默认的一些模板(了解知识)
|-default_index.tpl 它是我们自动生成的控制器模板文件

|-dispatch_jump.tpl它是我们网站发出成功或失败的中间跳转文件

|-page_trace.tpl它是我们调试时显示的模板文件

|-think_exception.tpl它是我们抛出异常时页面展示的文件
|-base.php 定义一些常量
|-console.php 它是控制台的入口文件
|-convention.php 是框架惯例配置文件
|-help.php 助手函数
|-start.php是框架启动文件

|-vendor 是composer安装过程中生成的目录,通过composer安装的所有类库都被安装在了这个目录中
在这里插入图片描述
2.TP5开发规范:

    *   目录命名、配置参数、非类库文件名、表名、字段名:小写+下划线
  • 类文件名和其内的类名:驼峰,首字母大写,两者名字要一样

  • 函数、属性名:驼峰,首字母小写

  • 常量:大写字母+下划线

  • 类文件名均以.php结尾

  • 类文件的命名空间和类文件所在的路径一致

  • 以双下划线__开头的函数或方法为魔术方法

  • 应用的类库文件的命名空间,最顶级的统一为app

五 ThinPHP5模块设计
common继承
ThinkPHP5配置
thinkphp提供两种获取和设置配置的方式,一种是通过think下的config类进行改变,另一种是通过config初始函数来进行设置和改变;config初始函数其实就是think下config类或者是封装。

位于 Thinkphp下的convertion文件里面 config()

定义整个框架系统的配置文件目录

1.在public目录下,打开index.php,在代码中define(‘CONF_PATH’,DIR.’/…/conf/’)
2.tp5提供了一个获取框架配置参数(惯例配置)的助手函数 config(),这个函数返回的配置参数来源于thinkphp目录下的convention.php文件

1.php应用配置

2 查惯例配置
在APP模块文件(如index(模块文件名)/Index(类名)/index.php)中写
dump(config());在浏览就可以看惯例配置,惯例文件是在thinkphp框架文件夹中的convention.php
应用配置
在APP(应用目录)同一级下建conf文件夹并在此文件夹中建config.php文件:写相应的配置(如:return[‘app_debug’=>‘ture’,‘app_name’=>‘nihao’])
并在根目录下的入口文件(app/public/index.php)加入如下代码:
defile(‘CONF-PATH’,DIR . ‘/…/conf/’)

3扩展配置

4.场景配置
(1)场景配置:不同办公环境中,使用不同配置
(2)config下新建不同办公环境配置文件,eg:设置在家办公环境home.php;公司办公环境 office.php;
 (3)在config.php设置数组‘app_status’=>‘home’/‘office’
(4)如果需要在不同环境中配置不同的数据库设置,需要把整个数据库的设置拷贝到数组下

5. 模块配置
1.之前的扩展配置和场景配置都是相对应用级别的,而模块配置是相对模块级别,作用域不同
2.实现的方式
a.在conf目录下建立与app目录下模块名相同的目录,该目录下在创建config.php文件,那么这个文件中的配置参数只在访问  对应的app模块的时候生效
6 动态配置

7 Config类和助手函数config

Congfig::set(“名”,“值”,“模块”)
Congfig::get(“名”,“值”,“模块”)
对应模块的才能获取到
Config::has(“名”),不存在和null都返回false

8 环境变量配置和使用

入口文件
单入口文件的定义: 应用程序所有的http请求都由一个文件接收并由该文件转发到功能代码中
单入口文件:安全检测,请求过滤,
tp5定义的常量一般都存放在thinkphp框架目录下base.php中

9 隐藏文件

隐藏入口文件
1.什么是隐藏入口文件:其实就是将入口文件index.php不显示在路由中,例如:在不开启隐藏入口文件设置下,需要访问应用默认的index方法,需要这样写:localhost/index.php/index/index/index,如果开启隐藏入口文件设置,那么将index.php拿掉也是可以访问
2.如何来设置隐藏入口文件:apache提供重写静态规则在public目录下创建.htaccess文件,默认apache会去访问这个文件,实现隐藏的需求;nginx需要在nginx.conf文件中配置静态规则

10 入口文件绑定
define(‘BIND_MODULE’,‘admin’);
在public下可创建多一个入口文件,可实现不同入口文件访问不同模块。
tp框架提供了一个入口文件自动绑定功能 “auto_bind_module”=> true,入口文件名与模块文件名相同时,自动访问与之对应的模块。等同于在 admin,php中定义 define(“BIND_MODULE”,“admin”);
绑定模块一般适用于小型企业网站,一个控制器够用的情况,大型项目不建议使用。

绑定模块方法1:
tp\public\index.php入口文件指定默认模块
define(‘BIND_MODULE’,‘admin’);//绑定admin模块,可以访问控制器->方法

11 路由
在config.php中配置
// 是否开启路由
“url_route_on” => true,
同级目录下创建 route.php文件,把需要更换的目录地址替换,而原先的地址已经不可以访问
// 是否强制使用路由
“url_route_must” => false
当开启强制路由,一定要用路由

六 请求

获取Request对象的3种方法:
1.助手函数request(). $req = request();
2.用think下的request类. (单例模式)
use think\Request;
$req = Request::instance()
3.也要引用think下的Request.
public function index(Request KaTeX parse error: Expected '}', got 'EOF' at end of input: req){ dump(req);
}

1 视图
通过控制器 渲染视图 传参

Index控制器下的index()方法渲染view/index/index.html

return view(‘index’,[‘参数名’=>‘参数值’],[‘被替换的值’=>‘欲替换的值’]);

如:
return view(‘index’,[‘a’=>‘10’],[‘Hi’=>‘HelloWorld’]);
在index.html 中
{$a} 输出 10
Hi 输出 HelloWorld
2、视图路径
view(‘page_1’)或view(‘page_1.html’) 对应 view/控制器名/page_1.html
view(‘hello/page_2’) 对应 view/hello/page_2.html
view(’./page_3.html’) 对应 public/page_3.html

3、使用controller类(该类不是必须的,但如果需要调用该类的方法,则必须继承)
use think\controller;

class 类名 extends controller

$this 表示已继承的controller的类对象

$this->assign(变量名,值);
$this->display(值,[keyValue数组]);

4 变量的输出,赋值和替换

thinkPHP向页面赋值有四种方式:(需要先继承Controller)

  1. $this->assign(‘key’, ‘value’);

  2. $this->view-> key = ‘value’;

  3. $this->fetch(‘html模板名’, [
    ‘key’ => ‘value’,
    ‘key2’ => ‘value2’
    ]);

  4. View::share(‘key’, ‘value’); # 使用该方法必须先 use think\View;

5-3 系统变量原生标签
1.在模板中使用系统变量,格式形如: {KaTeX parse error: Expected 'EOF', got '}' at position 14: Think.xxx.xxx}̲。 eg: {Think.server.HTTP_HOST}
{KaTeX parse error: Expected 'EOF', got '}' at position 25: ….PHP_APP_STATUS}̲ {Think.session.name}
{KaTeX parse error: Expected 'EOF', got '}' at position 17: …hink.cookie.uid}̲ {Think.get.sid}
{KaTeX parse error: Expected 'EOF', got '}' at position 18: …ink.request.sid}̲ {Think.post.id}
{KaTeX parse error: Expected 'EOF', got '}' at position 21: ….const.APP_PATH}̲ // 获取系统常量 {Think.APP_PATH} // 获取系统常量,可省略const,直接加常量名

模板变量
模板循环便签
volist:一般循环select结果(二维数组)

  • 格式:{volist name=“list” id=“a”}

    {$a.email}

    {/volist}
  • 参数说明:
  • name:控制器中分配的数组变量名
  • id:当前循环变量名,一维的key
  • offset:偏移量,表示从指定单元位置开始遍历。数组第一个单元为0。
  • length:遍历次数
  • mod:当前的单元位置对mod值取余。数组第一个单元位置为0。
  • key:默认为i,可自定义,是代表循环第几次
  • empty:定义当数组为空的情况下的说明文字,可以是字符串也可以是变量(变量建议在控制器内分配,在变量内可使用html标签),字符串的时候不能直接使用html标签。
  • 可以直接使用$key输出索引,也就是数组下标名
    foreach
  • 第一种最简单的格式: {foreach $list as KaTeX parse error: Expected 'EOF', got '}' at position 3: vo}̲ <p>{vo.email}{/foreach}
  • 第二种格式:{foreach name=“list” item=“vo”}
  • 可以直接输出索引$key,也可以在foreach里面定义 key="s"来定义索引变量名
    for
  • 格式:{for start=“开始值” end=“结束值” comparison="" step=“步进值” name=“循环变量名” } {/for}
  • comparison默认是lt,也就是小于,start小于end
  • step默认是1
  • name默认是i,可以修改
  • 等同于 for( i = 1 ; i=1; i=1;i<10;$i++)

比较标签

相等:eq标签(也可以写equal),用法是 {equal name=“a” value=“6”}相等{else/}不相等{/equal},name是控制器分配的变量名,value是要对比的值(也可以使用模板分配的变量),else是取反,一定要加斜杠
不相等:neq标签(也可以写成notequal),用法同上
大于:gt标签,用法同上
小于:lt标签,用法同上
大于等于:egt标签,用法同上
小于等于:elt标签,用法同上
{switch name=“Think.get.level”}
{case value=“1”}普通会员{/case}
{case value=“2”}2普通会员{/case}
{case value=“3”}3普通会员{/case}
,用extend继承 name=‘目录’,后面没有后缀名,{block name=’’}{/block}方法来修改
2{block}能 输出原来模板内容
3,layout ‘layout_on’ =>‘true’ ‘layout_name’=>'a’开启后默认的访问view文件机制发生变化,会访问view/a.html,a.html 中的{CONTENT}的内容会被index控制器下指定方法对应view/index/*.html文件内容替换,通过给方法传递参数() a.html可以显示不同的内容

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(一) 系统管理:菜单权限、前台菜单、角色管理、职员管理、登录日志、操作日志、图片空间、商城消息、风格设置、计划任务 (二) 基础设置:商城配置、导航管理、广告管理、广告位置、银行管理、支付管理、地区管理、友情链接、快递管理、消息模板 (三) 会员管理:会员等级、会员管理、账号管理 (四) 文章管理:文章管理、文章分类 (五) 运营管理:推荐管理、商品推荐、店铺推荐、品牌推荐、财务管理、资金管理、提现管理 (六) 订单管理:订单管理、订单管理、投诉管理、退款管理 (七) 广告管理:广告位置、广告管理 (八) 商品管理:商品管理、已上架商品、待审核商品、违规商品、商品分类、商品属性、品牌管理、商品规格、评价管理 (九) 虚拟物品自动发货:虚拟商品上架、卡密管理、自动发货 (十) 扩展管理:插件管理、钩子管理 (十一) 分销管理:分销管理菜单、分销商品列表、佣金分成列表、推广用户列表 (十二) 数据分析:商品销售排行、店铺销售统计、销售额统计、销售订单统计、新增会员统计、会员登录统计 (十三) 营销管理:满减、满送、满包邮,优惠券功能,三级分销,商品团购,限时拍卖 (十四) 微信管理:公众号设置、自定义菜单、用户管理、主动回复文本信息、主动回复图文信息、微信消息模板 (十五) 支付管理:支付宝支付,微信支付、货到付款、积分支付、余额支付 (十六) 短信接口:阿里大于 (十七) 物流接口:快递100接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值