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__ 中定义的变量规则我们称之为全局变量规则,

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

    剩余复杂路由见说明书。

  • 相关阅读:
    5.2基础标签学习
    6.15ajax选房子
    6.15ajax写数据库的增删改查
    [Ext JS 4] 实战之Grid, Tree Gird 添加按钮列
    DOM4J 读取XML配置文件进行数据库连接
    Bit Map解析
    图像像素操作
    九度OJ 1025 最大报销额(01背包)
    MYSQL :逗号分隔串表,分解成竖表
    interrupt & storage & DMA
  • 原文地址:https://www.cnblogs.com/bai2018/p/11301938.html
Copyright © 2011-2022 走看看