php教程自学网 - 轻松零基础学php视频教程
条幅广告
当前位置: 主页 > thinkphp框架 >

Thinkphp5学习笔记

时间:2018-09-28 15:57来源:未知 作者:admin 点击:
thinkphp5是一个全新的版本它不再兼容以前的版本,改动比较大。个人认为它很像YII2,如果你是YII2的老司机,上手tp5学习成本会比较小。TP5首次支持使用composer的方式安装,看起来更加具
thinkphp5是一个全新的版本它不再兼容以前的版本,改动比较大。个人认为它很像YII2,如果你是YII2的老司机,上手tp5学习成本会比较小。TP5首次支持使用composer的方式安装,看起来更加具有现代框架的气质。本文不打算写成文档,虽然TP的官方文档值得呵呵。只记录一些个人觉得有点价值的东西和大家分享,希望能帮大家少踩一些坑~
 
1.关于dump方法(将变量,对象数组等以更友好的方式打印出来)
正常情况下dump打印出来的数组和变量是友好的,有适当的缩进排版。不过也有特珠的情况,如果你和我一样使用wampServer之类的在本机调试,很可能默认开启了Xdebug。解决方法是在php.ini当中关掉xdebug。
 
2.关于$_EVN(全局环境变量)打印出来是空的数组
解决方法依然是改php.ini将variables_order = "EGPCS",不过不推荐改配置,据说是影响性能,而且thinkphp5.0封装了一些获取环境变量的方法,更好的做法是在核心文件夹的同级创建.env文件,在里面以key=>value的方法如:
 
env_type=test
使用\think\Env::get("env_type")来获取值,利用这种方式可以方便在本机和服务器以及开发测试环境当中部署不同的配置文件
 
3.在tp5当中配置使用redis
首先在config.php当中加入redis的配置如下,可以从核心文件夹的惯例配置文件convention.php中复制,
 
return [
    'redis'=>[
        'host'      => '127.0.0.1',
        'port'      => 6379,
        'password'  => '',
        'select'    => 0,
        'timeout'    => 0,
        'expire'    => 0,
        'persistent' => false,
        'prefix'    => '',
        ],
];
然后就可以在控制器中使用如下代码方便的进行操作redis了
 
$opt = Config::get("redis");
$res = new Redis($opt);
$name = $res->get("name");
echo $name;
4.关于Request对象
Request请引入命名空间think\Request;
 
如下是常用的方法,就不一一解释了
 
dump($req->method());
dump($req->pathinfo());
dump($req->path());
dump($req->get());//普通get格式
dump($req->param());//pathinfo的参数
dump($req->post());
session("username","damon");
dump($req->session());
cookie("age",33);
dump($req->cookie());
dump($req->cookie('PHPSESSID'));
dump($req->module());
dump($req->controller());
dump($req->action());
dump($req->url());
dump($req->baseUrl());
5.关于改变Response类型
不推荐使用类似于echo json_encode($arr);之类的代码,推荐使用tp5提供的方式来改变返回类型,方法是改变配置项中的default_return_type
 
参考如下代码:
 
$res = [
    "code"=>100,
    "result"=>[
        "list"=>[1,2,3,4,5,6]
]
];
Config::set('default_return_type','xml');
//Config::set('default_return_type','json');
//Config::set('default_return_type','jsonp');
return $res;
6.打印所有的当前所有配置项
dump(config());
7.修改配置文件目录
修改public文件夹下的index.php当中代码,并在合适的目录新建配置文件目录
 
define('CONF_PATH', __DIR__.'/../conf/');
8.为各模块创建单独的配置文件,只对本模块有效
在配置文件目录中以模块名如admin创建子文件夹,并在子文件夹中新建config.php
 
9.在controller中传递变量,在view中接受变量
assign
$this->assign("aa","hahaha");
fetch
return $this->fetch('viewdemo',[
    'name'=>'hello',
    'description'=>'world'
]);
share
\think\View::share('bb','bbb');
在视图当中可以使用{$name} {$aa} {$description} 展示变量的值,视图中仍然支持原生的写法,更多的替换写法,请自行google或者参看文档
 
10.不使用模板渲染页面
return $this->display('hello,{$content}',[
    "content"=>"world!"
]);
hello,{$content}这段代码只能用单引号包裹,如果要用双引号请在$前面加上转义符\,否则会报错
 
11.修改模板引擎标签标记,来解决tp跟前端框架的冲突如vue.js等
解决方法:修改配置项
 
'tpl_begin' => '{',
// 模板引擎普通标签结束标记
 
'tpl_end'      => '}',
12.全局替换视图中的字符串
修改配置项
 
// 视图输出字符串内容替换
'view_replace_str'      => [
    'hello'=>'olleh'
],
完成以上配置,相关作用域的hello字符串将全部替换成olleh
 
13.在视图中使用引用css图片等资源
在视图中可以直接使用__ROOT__,__STATIC__,__CSS__,__JS__,__URL__等方式引用正确的路径
 
比如
 
<img src="__STATIC__/images/psb.jpg"/>
14.在视图中使用$Think访问系统变量
如:
 
$Think.session.name //获取session中的变量
$Think.cookie.age //获取cookie中的变量
$Think.server.HTTP_HOST //获取$_SERVER中的变量
$Think.get.id //获取get中的变量
$Think.post.email //获取post中的变量
$Think.const.APP_PATH//获取系统中的常量
$Think.APP_PATH等同于上面的方式
15.在模板当中使用注释
{/*
 
    我是模板注释kwgwgwgfdfdskfskdddsdffdfadfsdfddd
 
*/}
16.在视图中使用原生插入原生代码
在视图中可以使用<?php ?>标签插入原生代码,或者使用{php} {/php}标签对,在当中插入普通的php代码即可
 
17.在视图中遍历数组的常用方法
volist
{php}
    $empty = '没有数据';//当填充数据为空时,替换模板
{/php}
 
{volist name="data" id="item" empty="$empty" key="i" offset="0" length="3" mod="1"}
    {$i}=>{$item.name}--{$item.age}
{/volist}
foreach
{foreach $data as $item}
    {$i}=>{$item.name}--{$item.age}
{/foreach}
for
{for start="1" end="10" step="2" name="i"}
    {$i}<br/>
{/for}
18.在视图中使用比较标签
eq(equal)
{eq name="val1" value="11"}
    等于11
{else/}
    不等于11
{/eq}
neq
{neq name="val1" value="10"}
    不等于10
{else/}
    等于10
{/neq}
gt
{gt name="val1" value="5"}
    大于5
{else/}
    小于等于5
{/gt}
lt
{lt name="val1" value="10"}
    小于10
{else/}
    大于等于10
{/lt}
egt
{egt name="val1" value="10"}
    大于等于10
{else/}
    小于10
{/egt}
elt
{elt name="val1" value="10"}
    小于等于10
{else/}
    大于10
{/elt}
与变量的比较需要加上$符
{eq name="val1" value="$val2"}
    val1 = val2
{/eq}
19.在模板中使用条件判断标签
switch
{switch name="val1"}
    {case value="1"}1{/case}
    {case value="5"}5{/case}
    {case value="10"}10{/case}
    {case value="15"}15{/case}
    {case value="20"}20{/case}
    {case value="30|40|50"}30 or 40 or 50 {/case}
    {default/}0
{/switch}
range
{range name="val2" type="in" value="1,2,3,4,5"}
    val2 in vals
{else/}
    val2 not in vals
{/range}
in
{in name="val2" value="1,2,3,4,5"}
    val2 in vals
{else/}
    val2 not in vals
{/in}
notin
{notin name="val2" value="1,2,3,4,5"}
    val2 not in vals
{else/}
    val2 in vals
{/notin}
between
{between name="val2" value="1,10"}
    val2 between 1-10
{else/}
    val2 notbetween 1-10
{/between}
notbetween
{notbetween name="val2" value="1,10"}
    val2 notbetween 1-10
{else/}
    val2 between 1-10
{/notbetween}
defined
{defined name="APP_PATH"}
    APP_PATH is defined.
{else/}
    APP_PATH is not defined.
{/defined}
if
{if condition=" ($val2 != 2) AND ($val2 !=3) "}
    $val2 != 2 and $val2 !=3
{else/}
    $val2 = 2 or $val2 = 3
{/if}
20.在视图中使用布局文件
修改如下配置项,开启使用布局文件
 
'template'               => [
            'layout_on' => true,
            'layout_name' =>'layout',
        ],
 
TP5中使用布局文件的方式和YII2.0当中使用布局文件的方式几乎是一致的
布局文件中使用{__CONTENT__}代替具体渲染的view页面内容
 
21.使用include方式引用公共部分
{include file="common/footer"/}//将公共部分单独存放,使用include引入
22.在使用布局的页面中修改不同的页面标题
<title>{$title}</title><!---layout----->
 
$this->assign([
            'title'=>'page1'
]);//在对应的controller ->action中分配变量
 
作者:暴走的小学生
链接:https://www.jianshu.com/p/f37ae97d0918
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
相关推荐
  • ThinkPHP5.2版本正式变更为6.0版本
  • 主要考虑到新的架构调整变化较大以及不支持无缝升级这两大原因,官方正式宣

  • thinkphp5响应输出
  • 大多数情况,我们不需要关注Response对象本身,只需要在控制器的操作方法中返

  • thinkphp5请求缓存
  • 请求缓存 支持请求缓存功能,支持对GET请求设置缓存访问,并设置有效期。 请

  • thinkphp5参数绑定
  • 参数绑定是把当前请求的变量作为操作方法(也包括架构方法)的参数直接传入

  • thinkphp5:HTTP头信息
  • 可以使用Request对象的header方法获取当前请求的HTTP请求头信息,例如: $info =

  • thinkphp5请求类型
  • 获取请求类型 在很多情况下面,我们需要判断当前操作的请求类型是GET、POST、

  • thinkphp5输入变量
  • 可以通过Request对象完成全局输入变量的检测、获取和安全过滤,支持包括$_GE

  • thinkphp5请求对象
  • 当前的请求对象由think\Request类负责,在很多场合下并不需要实例化调用,通常

  • thinkphp5请求信息
  • Request对象支持获取当前的请求信息,包括: 方法 含义 host 当前访问域名或者

  • thinkphp5伪静态
  • URL伪静态通常是为了满足更好的SEO效果,ThinkPHP支持伪静态URL设置,可以通过设

猜你喜欢