为了账号安全,请及时绑定邮箱和手机立即绑定

快速入门ThinkPHP 5.0--基础篇

难度中级
时长 5小时20分
学习人数
综合评分9.63
150人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • 可以在conf文件中创建对应模块的配置文件进行配置,也可以在方法内传递参数配置。但是实际开发中会在入口文件或者构造方法来统一的修改访问类型

    <?php

    return [

    'default_return_type' =>'xml'

    ];特殊封装,不需要在每个方法里都传递这样的参数,可以通过入口/构造方法来统一修改返回类型


    响应对象Response

      1.针对某一个模块返回其他格式类型,那么需要给在conf文件中创建对应模块的配置文件config.php中配置default_return_type

      2.针对某一个操作返回特殊的类型,那么可以通过动态配置实现

    在TP5中不允许在控制器和方法里die(),因为响应有可能发生问题

    一般在控制器里面直接return 数据,默认格式为html,默认会调用response对象出输出数据,如果需要对数据格式进行修改,第一种在config.php中修改,这个设置全局的,如果想对某个控制器的数据进行修改,一般在控制器里面动态设置返回格式


    <?php

    namespace app\api\controller;

    use think\Config;

    class Index

    {

    public function getUserInfo($type='json')

    {

    if(!in_array($type,['json','jsonp','xml']))

    {

    $type = 'json';

    }

    Config::set('default_return_type',$type);//动态配置,这样就不用修改配置文件,可以通过同一个方法返回不同的响应对象

    $data = [

    'code'=>200,

    'result'=>[

    'username'=>'rui',

    'email'=>'123@qq.com',

    'gender'=>'female'

    ]

    ];

    return $data;

    //html返回的是字符串,当前返回的是数组,无法解析

    }

    }



    <?php

    namespace app\index\controller;

    use think\Request;

    use think\Config;

    class Index

    {

    public function index(Request $request)

    {

    $res = [

    'code'=> 200,

    'result'=>[

    'list' =>[1,2,3,4,5,6]

    ]

    ];

    Config::set('default_return_type','xml');

    return $res;

    //dump($res);

    }

    }


    查看全部
    1 采集 收起 来源:响应对象

    2018-04-21

  • Request.php有更多可供参考

    helper.php中创建函数的方法的值得学习,先判断一下是否存在

    tp5用$rquest->param()获取传递过来的参数,如果参数有重复的情况会覆盖,覆盖的规则如下:pathinfo参数会覆盖post中的参数,post中的参数会覆盖get中的参数。

    1、input助手函数也是获取对象里面的参数. input('传递方式','参数','对参数过滤')

    注意获取请求的参数值,尽可能带上请求的方式,如:input(get.id) ,如果获取的值不存在时,可通过第二个值进行默认值设置,第三个值用来过滤获取的值,例如可将值转换成intval

    2、同时也可以通过request对象下的相关方法获取对应的参数或值,来对值进行相关操作

    <?php

    namespace app\index\controller;

    use think\Request;

    class Index

    {

    public function index(Request $request)

    {

    //dump($request->param());//param方法会返回post,get,pathinfo传递的所有值,即合并


    //http://localhost/imooc/public/index/index/index/type/5.html?id=10

    //$res = input('get.id');//10

    //dump($request->get('id'));//10


    //$res = input('post.id','100');//没有则默认100,结果100

    //dump($request->post('id','100'));//100


    //$res = input('post.id','abc','intval');//没有则默认100,结果100

    //dump($request->post('id','100'));//100


    #获取类型

    //'get', 'post', 

    //'put', 'patch', 

    //'delete', 'param', 

    //'request', 'session', 

    //'cookie', 'server', 

    //'env', 'path', 'file'

    //通过input助手函数对request中参数进行获取,建议使用request对象,避免重复定义相同函数

    //$res = input('patch.id');

    //session('emial','987@qq.com');

    //dump(input('session.emial'));

    //dump(input('session.emials','imooc@qq.com'));//不存在默认imooc

    session('ss','   123   ');

    $res = $request->session('ss','','trim');//trim过滤

    dump($res);

    }

    }


    查看全部
    0 采集 收起 来源:input助手函数

    2018-04-20

  • 包含和继承


    视图层页面通过include方式加载公共页面

    {inclue file="common/nav" /}


    继承 一个页面呢可继承另外的页面

    {extend file="common/base" /}

    同一个页面中不允许有两个同样的block name

    block表示替换被继承的页面中指定的样式或者标签

    {block name="title"}

    要替换的值

    {/block}


    layout

    layout 'layout_on' =>'true' 'layout_name'=>'a'开启后默认的访问view文件机制发生变化,

    会访问view/a.html,

    a.html 中的{__CONTENT__}的内容会被index控制器下指定方法对应view/index/*.html文件内容替换,

    从而 达到访问不同的方法,改方法对应的view文件会显示不同的内容

    若要改变其他共有的部分,还可通过控制器层使用$this -> assign传值

    通过给方法传递参数() a.html可以显示不同的内容


    查看全部
  • swith标签    Think.get.level通过URL传参获得   

    {switch name="Think.get.level"}

    {case value="1|4"}<p>1</p>{/case}  1|4表示当get的传参值等于1或4时

    {case value="2"}<p>2</p>{/case}

    {case value="3"}<p>2</p>{/case}

    {default/}<p>other</p>

    {/switch}


    range标签 

    type的值为between、notbetween、in、notin

    当type值为in、notin时,value的值可以为多个整数如:1,2,3,10

    当type值为between、notbetween时,value的值只能为两个整数如:1,10

    {range name="Think.get.level" value="1,10" type="notbetween"}

    <p>当前的level值不在1到10之间</p>

    {else/}

    <p>当前的level值在1到10之间</p>

    {/range}


    defined标签  判断常量是否被定义

    {defined name="APP_PATH_NO"}

    <p>APP_PATH_NO已定义</p>

    {else/}

    <p>APP_PATH_NO未定义</p>

    {/defined}


    if标签 条件判断

    {if condition="($Think.get.level==1)"}

    <p>当前的值为1</p>

    {else/}

    <p>当前的值不为1</p>

    {/if}


    查看全部
    1 采集 收起 来源:条件判断标签

    2018-04-20

  • 介绍thinkphp5比较标签 

    eq  neq   equal   lt   gt   elt   egt

    格式如下:

    {eq name="a" value="$b"}

    {else/}

    {/eq}

    查看全部
    0 采集 收起 来源:比较标签

    2018-04-20

  • 1、index.php

    2、thinkphp-》start.php

    3、start.php里App::run()返回Response对象,Response->send()调用send的方法

    run方法来源 thinkphp->library->think->App.php里run方法返回request对象,run()方法只执行一次

    thinkphp->library->think->Request.php(更多的$request请求获取可参照,了解更多方法)


    常用的Request操作:

    <?php

    namespace app\index\controller;

    use think\Request;

    class Index{   

        public function index(Request $request){        

            // 获取浏览器输入框的值/url中的值

    // .html可以帮助我们提高安全性,不可以分辨出使用的开发语言

    dump($request->domain());//http://jianpf.com域名

    dump($request->pathinfo());//index/index/index.html

    dump($request->path());//index/index/index


    # 请求类型

    dump($request->method());//GET请求

    dump($request->isGet());//GET请求true

    dump($request->isPost());//POST请求true

    dump($request->isAjax());//Ajax请求true


    #请求参数(从TP5开始,所有的get不包含pathinfo的传值)

    dump($request->get());

    dump($request->param());

    dump($request->post());

            /*启用session要修改config,不然不保存

            tp\thinkphp\convent.php下的第198行

            session=>['auto_start'=>ture]和删除session安全'httpponly'和'secure'配置

            在conf模块下config中添加*/

    //session('name','rui');//助手函数

            dump($request->session());

            //cookie('email','654321@qq.com');//助手函数

            dump($request->cookie());

            # 获取数组中的单个值,直接传递参数获取

            dump($request->param('type'));

            dump($request->cookie('email'));

            dump($request->session('username'));


    #获取当前是哪个模块\控制器\操作,再操作,用于调试

    dump($request->module());

    dump($request->controller());

    dump($request->action());


    dump($request->url());//当前.URL ./index/Index/index/type/5.html?id=10

    dump($request->baseUrl());//不用?号后的参数

        }

    }


    查看全部
  • volist:一般循环select结果(二维数组) * 格式:{volist name="list" id="a"}<p>{$a.email}</p>{/volist} * 参数说明: * name:控制器中分配的数组变量名 * id:当前循环变量名,一维的key * offset:偏移量,表示从指定单元位置开始遍历。数组第一个单元为0。 * length:遍历次数 * mod:当前的单元位置对mod值取余。数组第一个单元位置为0。 * key:默认为i,可自定义,是代表循环第几次 * empty:定义当数组为空的情况下的说明文字,可以是字符串也可以是变量(变量建议在控制器内分配,在变量内可使用html标签),字符串的时候不能直接使用html标签。 * 可以直接使用$key输出索引,也就是数组下标名 foreach * 第一种最简单的格式: {foreach $list as $vo} <p>{$vo.email}</p>{/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<10;$i++)

    查看全部
    0 采集 收起 来源:模板循环标签

    2018-04-20

  • tp5中视图层页面  变量需要用到php函数处理的情况

    https://img1.sycdn.imooc.com//5ad9577b00018f5e06190224.jpg

    tp5中视图层页面 可以直接对变量进行运算符设置,如图:

    https://img1.sycdn.imooc.com//5ad958f80001cbb404370197.jpg

    tp5张视图层页面,变量的输出,及不同的注释如图:

    {liteal}

        liteal标签中的变量不会被编译

    {/liteal}

    https://img1.sycdn.imooc.com//5ad95b650001129c05920269.jpg

    查看全部
  • 获取请求对象的三种方式

    1、助手函数

    $request = request( );

    dump($request);//即可打印出请求的对象


    2、使用think下的request类获取实例

    需要先加载request命名空间

    use think\Request;


    public function index( ){

      $request = Request::instance( );

    dump($request);即可打印出请求的对象


    }


    3、直接注入到方法(建议使用)

    需要先加载request命名空间

    use think\Request;


    在方法中传入request对象参数 如下:

    public function index(Request  $request){

       dump($request);

    }


    查看全部
    0 采集 收起 来源:请求对象获取

    2018-04-19

  •    

    conf——config.php

        配置路由


        public下新建route.php文件

        'auto_bind_module' => true, 

        'url_route_on'     => true, 

        'url_route_must'   => false

     

    index模块下

        public function info($id)

            {

                //http://localhost/imooc/public/index/index/info/id/5

                //localhost/imooc/public/news/5.html

                echo url('index/index/info',['id' => 10])."<br>";

                return "{$id}";

            }


        'url_route_must'改为true后,要在route.php文件配置路由'index/index/demo'=>'index/index/demo'


    查看全部
    0 采集 收起 来源:路由

    2018-04-19

  • https://img1.sycdn.imooc.com//5ad84bc6000121b506340306.jpg

    https://img1.sycdn.imooc.com//5ad84be10001aed205790259.jpg也可输入php的原生标签,但一般系统中视图页面不建议编写原生标签,逻辑较复杂,不利于系统后期维护

    查看全部
  • https://img1.sycdn.imooc.com//5ad8411b0001512906400224.jpg此变量为系统中已经定义好的可替换指定路径的变量

    同时,该变量还可在项目应用配置文件中 view_replace_str 进行设置(可设置其他的自定义变量),主要是为了方便当系统的css或js文件位置改变时,页面无法加载js、css样式的情况,通过定义该变量,若样式路径发生改变,只需在配置文件中进行修改即可,除tp5外,tp3.x版本中不具备此项功能https://img1.sycdn.imooc.com//5ad8419d00019ad308220373.jpg变量的调用具有加载优先性,tp核心配置文件中的最优先-》应用配置文件-》方法中配置文件  最后会进行依次覆盖

    查看全部
  • 可以通过图中的4种方式向页面中赋值,调用View::share() View控制器时需要加载 use think\View的命名空间
    若要使用$this->view->key2 = '某一个字符' $this -> assign() $this > fetcch这 3种方法都需要extends Controller
    查看全部
  • 入口文件绑定

    绑定模块一般用于API接口生成等,适用于小型企业网站,一个控制器够用的情况,大型项目不建议使用。


    开启thinkphp绑定模块,方法2种:

    1. 在public下新建api.php文件

    <?php

    // 定义应用目录

    define('APP_PATH', __DIR__ . '/../app/');

    define('CONF_PATH', __DIR__ . '/../conf/');

    // 加载框架引导文件

    require (__DIR__ . '/../thinkphp/start.php');


    新建与php文件相同名字的模块api。在public下可创建多个入口文件,可实现不同入口文件访问不同模块。入口文件名与模块文件名相同时,自动访问与之对应的模块。


    conf->config.php 配置自动绑定 auto_bind_module"  => true 相当于public下api.php文件define("BIND_MODULE","api");

    当访问localhost/api.php时只能访问api模块下的内容,不可以访问其他模块


    2. 手动绑定:模块->控制器->方法

    public\index.php入口文件指定默认模块

    define('BIND_MODULE','admin');//定义此常量,访问public/admin.php入口文件时,则默认绑定admin模块,可以访问控制器->方法

    define('BIND_MODULE','admin/index');//绑定admin模块index.php文件(只能传递方法)


    查看全部
  • 还可以通过调用Controller控制器的fetch方法 调用指定的view文件

    调用前需要加载use think\Controller 命名空间,并在指定的应用控制器中extends Controller类

    $this-> fetch()各参数同view()助手函数相同,区别是fetch()方法也可使用

    $this -> assign()方法传递变量的视图层(此方法需继承Controller类才可调用)即tp3.x版本相同,view()方法不能调用此方法


    tp3.x版本不同的是,$this->display()是直接在控制器中输出要显示的字符串,原3.x版本表示的是调用视图层,也可使用$this -> assign()方法,webserver项目中不建议使用$this->display()方法,这会导致视图层不可用

    查看全部
    1 采集 收起 来源:视图view

    2018-04-19

举报

0/150
提交
取消
课程须知
1、有一定的php基础。 2、对git composer 有一定的了解。 3、本机安装好相应的开发环境 4、最好有一定的mvc 框架的使用经验
老师告诉你能学到什么?
1、框架的搭建 2、目录文件的介绍 3、环境的配置 (开发 测试 线上环境) 4、请求对象和数据请求参数获取 5、相应对象和返回相应类型的数据 6、模板的使用 比较 判断 循环

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!