zoukankan      html  css  js  c++  java
  • Thinkphp5.0快速入门笔记(2)

    学习来源与说明

    https://www.kancloud.cn/thinkphp/thinkphp5_quickstart

    测试与部署均在windows10下进行学习。

    示例建立新的模块和控制器

    在application模块下,建立新的模块,取名为new_controller,则建立新的文件夹,取名new_controller,然后在之下建立文件夹controller,模块在controller之下创建,建立模块blog,则创建Blog.php如图所示。

    Blog.php中的内容如下:

    <?php
    namespace app
    ew_controllercontroller;
    class Blog
    {
        public function get($id=10)
        {
            return '查看id=' . $id . '的内容';
        }
        public function read($name)
        {
            return '查看name=' . $name . '的内容';
        }
        public function archive($year, $month)
        {
            return '查看' . $year . '/' . $month . '的归档内容';
        }
    }
    

    其中的namespace app ew_controllercontroller中,new_controller和创建的模块(目录)一致,

    其中的class Blog中,Blog控制器和创建的文件Blog.php一致。

    控制器中可访问的方法即为public function部分。

    ThinkPHP的URL访问

    URL访问的完整路径为:

    http://serverName/index.php/模块/控制器/操作

    例如访问:http://127.0.0.1/index.php/new_controller/blog/get/id/4(和上一段中的配置有关系)

    另外说明:控制器和操作名不区分大小写。如:http://127.0.0.1/index.php/new_controller/BLOG/GET/Id是合法的。

    可设置:如果希望严格区分大小写访问。// 关闭URL自动转换(支持驼峰访问控制器)'url_convert' => false(application中的config.php)

    URL传递参数

    访问:http://127.0.0.1/index.php/new_controller/blog/get/id/4

    对应到了new_controller模块,blog控制器,get方法,id参数设置为4进行传递。

    效果如下:(不传递参数默认id10传递)

    访问:http://127.0.0.1/index.php/new_controller/blog/archive/year/2019/month/12两个参数传递。

    当设置application下的config.php文件中的约92行处的url_param_type为1,则参数传递变为:http://127.0.0.1/index.php/new_controller/BLOG/Archive/2019/12。

    效果如下:

    隐藏URL中的index.php

    原始地址为:http://serverName/index.php/模块/控制器/操作。这里的index.php是指代根目录中public下的index.php文件,其内容指定了application路径

    隐藏index.php是否需要,可以先试试直接去掉index.php,如:http://127.0.0.1/new_controller/blog/archive/year/2019/month/12,访问成功则OK。

    而入门教程中认为:在apache中,需要.htaccess 文件下写入以下代码完成:(其它的类型的都在教程里了)

    <IfModule mod_rewrite.c>
    Options +FollowSymlinks -Multiviews
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
    </IfModule>

    URL路由缩减

    在application下的route.php定义了路由信息,如修改其为如下:

    <?php
    return [
        '__pattern__' => [
            'name' => 'w+',
        ],
        '[hello]'     => [
            ':id'   => ['index/hello', ['method' => 'get'], ['id' => 'd+']],
            ':name' => ['index/hello', ['method' => 'post']],
        ],
        'blog/:id' => 'new_controller/blog/get/',
    ];
    

    即增加了一行路由信息,那么访问:http://127.0.0.1/blog/123,即等价于访问:http://127.0.0.1/new_controller/blog/get/id/123。效果如下:

     

    更改以上代码中第10行为:

        'blog/[:id]' => 'new_controller/blog/get/',
    

    则id参数的传递可以成为可选,则访问地址http://127.0.0.1/blog/正常输出不报错,否则报错。

    针对index模块(以上都在说new_controller模块),则路由中可以省略为:

    'blog/[:id]' => '/blog/get/',
    

    默认index模块,直接写了控制器。index/blog/get/

    路由规则

    如:'hello/[:name]' => ['index/hello', ['method' => 'get', 'ext' => 'html']],

    定义了路由规则限制了必须是get 请求,而且后缀必须是html 的,

    路由简化

    相同的部分路由可以简化,如以下路由信息:

    '[blog]' => [
    ':year/:month' => ['blog/archive', ['method' => 'get'], ['year' => 'd{4}', 'month' => 'd{2}']],
    ':id' => ['blog/get', ['method' => 'get'], ['id' => 'd+']],
    ':name' => ['blog/read', ['method' => 'get'], ['name' => 'w+']],
    ],

    可以简化为:

    '[blog]' => [
    ':year/:month' => ['blog/archive', ['method' => 'get'], ['year' => 'd{4}', 'month' => 'd{2}']],
    ':id' => ['blog/get', ['method' => 'get'], ['id' => 'd+']],
    ':name' => ['blog/read', ['method' => 'get'], ['name' => 'w+']],
    ],
    

    其它

    在__pattern__ 中定义的变量规则我们称之为全局变量规则,

    同时定义了全局规则和局部规则的话,当前的局部规则会覆盖全局规则

    剩余复杂路由见说明书。

  • 相关阅读:
    codeforces 455B A Lot of Games(博弈,字典树)
    HDU 4825 Xor Sum(二进制的字典树,数组模拟)
    hdu 1800 Flying to the Mars(简单模拟,string,字符串)
    codeforces 425A Sereja and Swaps(模拟,vector,枚举区间)
    codeforces 425B Sereja and Table(状态压缩,也可以数组模拟)
    HDU 4148 Length of S(n)(字符串)
    codeforces 439D Devu and Partitioning of the Array(有深度的模拟)
    浅谈sass
    京东楼层案例思维逻辑分析
    浅谈localStorage和sessionStorage
  • 原文地址:https://www.cnblogs.com/bai2018/p/11301938.html
Copyright © 2011-2022 走看看