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

快速入门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下载
官方微信
友情提示:

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