一、基础:

创建项目:conposer create-project topthink/think tp5 --prefer-dist
创建项目模块:php think build --module demo
访问未配置的路由:http://localhost/tp5/
上线时要关闭调试模式:'app_debug' =>  false,   config.php
//创建母案文件需要继承controller类
use think\Controller; class Index extends Controller($name = '张三'){
public function index($name = '张三'){
    $this->assgin('name',$name);//可在html输出{$name}为张三
return $this->fetch();
  }
}
//创建数据表 -- 记录没试过
CREATE TABLE IF NOT EXISTS `think_data`(
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`data` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;INSERT INTO `think_data`(`id`,`data`) VALUES
(1,'thinkphp'),
(2,'php'),
(3,'framework');
//连接数据库
use think\Db; class Index extends Controller{
public function index(){
$data = Db::name('data')->find();
$this->assign('result', $data);
return $this->fetch();
}
}

二、URL和路由:

1、url访问:

标准的URL访问格式:http://serverName/index.php/模块/控制器/操作/参数名/参数/参数名2/参数2
传入参数还可以使用:http://serverName/index.php/模块/控制器/操作?参数名=参数&参数名2=参数2
//提示:模块在ThinkPHP中的概念其实就是应用目录下面的子目录,而官方的规范是目录名小写,因此模块全部采用小写命名,无论URL是否开启大小写转换,模块名都会强制小写。
//如果你的控制器是驼峰的,那么访问的路径应为:.../hello_world/index
class HelloWorld{
public function index(){}
}
//如果使用.../HelloWorld/index 则会报错:Helloworld不存在。必须要使用大小写的时候需要配置:
关闭URL自动转换(支持驼峰访问控制器):'url_convert' => false, config.php

2、隐藏index.html

//隐藏路径中的index.php,需要在入口文件平级的目录下添加.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>
//接下来就可以使用:http://tp5.com/index/index/hello 访问了
//如果使用的是Nginx环境:可以在Nginx.conf中添加:
localtion/{
  if(!-e$request_filename){
    rewrite ^(.*)$ /index.php?s=/$1 last;
    break;
  }
}

3、*定义路由:

//路由定义文件:application/route.php  原来的url将会失效!变为非法请求!
return ['hello/:name'=>'index/index/hello',];//此方法的 name参数必选!
return ['hello/[:name]'=>'index/index/hello'];//此方法的 name参数可选!
//动态定义路由:application/route.php
use think\Route; Rroute::rule('hello/:name/:age','index/hello');//必选参数
Rroute::rule('hello/[:name]/[:age]','index/hello');//可选参数

4、路由参数

//可以用来约束URL后缀条件等。.../hello/index.html有效
return [
'hello/[:name]' => ['index/hello', ['method' => 'get', 'ext' => 'html']],
];

5、变量规则

//可以用正则表达式来限制路由参数的格式
return [
'blog/:year/:month' => ['blog/archive', ['method' => 'get'], ['year' => '\d{4}', 'month' => '\d{2}']],
'blog/:id' => ['blog/get', ['method' => 'get'], ['id' => '\d+']],
'blog/:name' => ['blog/read', ['method' => 'get'], ['name' => '\w+']],
];

6、路由分组

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

《ThinkPHP 5.0快速入门》 基础和路由的更多相关文章

  1. 《ThinkPHP 5.0快速入门》 请求和响应

    1.请求对象 //传统调用$request = Request::instance();//实例化对象 $request->url();//获取当前的域名 //继承think\Controlle ...

  2. 《ThinkPHP 5.0快速入门》 数据库、查询语言

    1.数据库配置 return [ 'type' => 'mysql',// 数据库类型 'hostname' => '127.0.0.1',// 服务器地址 'database' => ...

  3. 快速入门系列--MVC--02路由

    现在补上URL路由的学习,至于蒋老师自建的MVC小引擎和相关案例就放在论文提交后再实践咯.通过ASP.NET的路由系统,可以完成请求URL与物理文件的分离,其优点是:灵活性.可读性.SEO优化.接下来 ...

  4. Scala快速入门 - 基础语法篇

    本篇文章首发于头条号Scala快速入门 - 基础语法篇,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的 ...

  5. python3.5+django2.0快速入门(一)

    因为这篇教程需要用到anaconda的一些操作,如果还不懂anaconda的操作的同学可以看下这篇文章python 入门学习之anaconda篇. 创建python3+的开发环境 直接在终端输入:co ...

  6. ExtJs 6.0+快速入门,ext-bootstrap.js文件的分析,各版本API下载

    ExtJS6.0+快速入门+API下载地址 ExtAPI 下载地址如下,包含各个版本 http://docs.sencha.com/misc/guides/offline_docs.html 1.使用 ...

  7. python3.5+django2.0快速入门(二)

    昨天写了python3.5+django2.0快速入门(一)今天将讲解配置数据库,创建模型,还有admin的后台管理. 配置数据库 我们打开mysite/mysite/settings.py这个文件. ...

  8. TensorFlow 2.0 快速入门指南 | iBooker·ApacheCN

    原文:TensorFlow 2.0 Quick Start Guide 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活 ...

  9. Thinkphp5.0快速入门笔记(2)

    学习来源与说明 https://www.kancloud.cn/thinkphp/thinkphp5_quickstart 测试与部署均在windows10下进行学习. 示例建立新的模块和控制器 在a ...

随机推荐

  1. 使用PHP读取PHP文件并输出到屏幕上

    看完这篇文章,你一定忘不掉htmlentities的用法 背景 今天有个需求,就是一个PHP开发的网址中,有一个页面可以提供给用户修改已经存在的PHP文件中的代码,并POST到服务器上保存. 每次将读 ...

  2. Mybatis的mapper接口在Spring中实例化过程

    在spring中使用mybatis时一般有下面的配置 <bean id="mapperScannerConfigurer" class="org.mybatis.s ...

  3. ASP.NET大文件分片上传

    文件夹数据库处理逻辑 public class DbFolder { JSONObject root; public DbFolder() { this.root = new JSONObject() ...

  4. 51 Nod 1449 砝码称重

    1449 砝码称重  题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 现在有好多种砝码,他们的重量是 w0,w1, ...

  5. 【luoguP2827】 蚯蚓

    题目描述 本题中,我们将用符号\rfloor⌊c⌋ 表示对 cc 向下取整,例如:\lfloor 3.0 \rfloor = \lfloor 3.1 \rfloor = \lfloor 3.9 \rf ...

  6. 树莓派安装QT(全部库包括)

    在网上现有的资料中大部分只有前两个命令,少量有三个命令,因此写下该博客 在树莓派上安装QT5的全部库,包括QtQuick.QtMultimedia库. sudo apt-get install qt5 ...

  7. 记一次antlr错误:ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.2ANTLR

    场景:重构spark 2.1版本的sql语法.因此 需要使用antlr: 前期准备:idea安装了antlr插件(antlr的4.7.2版本) 因此在maven工程中添加了antlr的依赖: < ...

  8. html,css,js实现的一个钟表

    效果如图: 实现代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  9. Cannot find ./catalina.sh The file is absent or does not have execute permission This file is nee Linux上tomcat无法正常启动

    上传了个tomcat7的压缩包上linux服务器,解压后,想直接启动,发现报错: Cannot find ./catalina.sh The file is absent or does not ha ...

  10. vue中解决three.js出现内存泄漏丢失上下文问题

    在跳转页面时添加以上代码即可. 在spa项目中,跳转页面并不会清楚已经创建的webgl实例,需要手动清楚.