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\new_controller\controller;
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\new_controller\controller中,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__ 中定义的变量规则我们称之为全局变量规则,
同时定义了全局规则和局部规则的话,当前的局部规则会覆盖全局规则
剩余复杂路由见说明书。
转载于:https://www.cnblogs.com/bai2018/p/11301938.html
Thinkphp5.0快速入门笔记(2)相关推荐
- Thinkphp5.0快速入门笔记(3)
学习来源与说明 https://www.kancloud.cn/thinkphp/thinkphp5_quickstart 测试与部署均在windows10下进行学习. 快速入门第三节 获取当前的请求 ...
- Thinkphp5.0快速入门笔记(1)
学习来源与说明 https://www.kancloud.cn/thinkphp/thinkphp5_quickstart 测试与部署均在windows10下进行学习. Composer安装和更新 C ...
- RHEL8.0快速入门系列笔记--理论知识储备(一)
RHEL8.0快速入门系列笔记–理论知识储备(一) 红帽公司发布Linux8.0系统已经有一段时间,最近准备学习关于RHEL8.0的相关新特性.根据官方介绍:RHEL8.0在云/容器化工作负载方面做了 ...
- RHEL8.0快速入门系列笔记--软件包管理(十一)
RHEL8.0快速入门系列笔记–软件包管理(十一) 一.软件包管理 1.Linux系统中软件包管理 (一)软件包类型 [1] 二进制包 什么是二进制包?有什么特点? 1.二进制包,指的是已经编译好的软 ...
- RHEL8.0快速入门系列笔记--计划任务服务crond(十五)
RHEL8.0快速入门系列笔记–计划任务服务crond(十五) 1.了解计划任务的作用 作用:释放我们的双手,释放我们的时间 计划任务,让系统在将来的指定时间点执行某些任务(程序) 计划任务,可以周期 ...
- 【机器学习】Python 快速入门笔记
Python 快速入门笔记 Xu An 2018-3-7 1.Python print #在Python3.X中使用print()进行输出,而2.x中使用()会报错 print("he ...
- Castle Active Record for .NET2.0快速入门示例
一.创建Web工程 创建一个Web站点或者Web应用程序,添加对Castle.ActiveRecord.dll的引用. 二.创建需要持久化的业务实体 在.NET2.0下,由于引入了泛型,创建业务实体比 ...
- 如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练)
如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练) 关于使用Spring MVC创建Web API的另一篇教程. 不太复杂. 只是一个演练. 生成的应用程序将提供简单的 ...
- TensorFlow 2.0 快速入门指南 | iBooker·ApacheCN
原文:TensorFlow 2.0 Quick Start Guide 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活 ...
最新文章
- Rancher 2.2.2 发布,优化 Kubernetes 集群运维
- java 虚拟机 参数_Java虚拟机的参数
- kl散度度量分布_强化学习新思潮1:值分布强化学习(04)
- android设置成默认应用程序,在Android中设置和取消设置默认应用
- 苹果AirPods 2预计将于3月25日发布 3月29日正式开卖
- RFC 8998: ShangMi (SM) Cipher Suites for TLS 1.3
- python分类与原理以及国内好的发展方向
- XState是一个状态管理的库
- ImageFun 使JPG的缩略图跟原图不一样 (刷微博必备)
- C语言的那些小秘密之【内存分配】
- c语言第六章谭浩强ppt,谭浩强C语言课件第6章.ppt
- Kindle fire 刷机
- ehvierwer登录与不登录_微信上不去了怎么办,峰哥教你微信登录不上去的办法
- 在字典中查找兄弟单词
- 企业付款到零钱(微信小程序提现,用户提现到零钱)
- 2019年京东PLUS会员前端开发之路总结
- CF756div3 vp
- 面试必问的 Java 字节流与字符流
- JAVA怎么替换html标签呢???
- [error]stack smashing detected