thinkphp学习笔记(一)
一.入门与安装
1.进入C:\Windows\System32\drivers\etc的hosts文件中增加
127.0.0.1 www.tp5.com
即访问这个域名就相当于访问127.0.0.1
2.修改apache配置文件
增加
<VirtualHost ~E42E:80> DocumentRoot "/home/www/tp5/public"<br /> ServerName tp5.com<br /> </VirtualHost>
意思为访问www.tp5.com系统会自动引导到这个public目录下
3.requery模块是处理$_GET和$_POST的 () 内置请求对象 就是在地址栏后面的那些
4.为什么访问的是public下,却能识别app下的,因为public下有那个静态文件
<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>
二.路由学习
1.默认访问方式
1)http://主机名/路径名 入口文件 模块 控制器 操作
http://localhost/test/index.php/index/index/index
2)URL访问路径大小:
host全部转为小写;
控制器首字母自动转为大写;
3)控制器为驼峰式 HelloWorld
访问时候
http://localhost/test/index.php/index/hello_world/index
4)如果想用HelloWorld访问HelloWorld的话,url_convert => false
5)第二种访问方式
http://localhost/test/index.php?s=index/index/index
6)现在tp5只支持这两种方式
2.参数传入
1)默认传入方式:参数可以随意传入,变量解析不看重顺序。
2)想要省略的传入的话,更改参数url_param_type = 1
3)现在只能严格按照操作方法的定义顺序来传值
http://localhost/test/index.php/index/index/shanghai/thinkphp
意思不用传变量名
http://localhost/test/index.php/index/index?name=thinkphp&city=shanghai
3隐藏index.php
1)tp5默认在app目录下有一个.htaccess文件,自动隐藏了,当然是Apache服务器下。
2)如果用的phpstudy,规则如下:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>
3)如果你使用的apache版本使用上面的方式无法正常隐藏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>
4)如果是nginx服务器的话
location /{//......省略部分代码
if(!-e $request_filename){
rewrite ^(.*)$ /index.php?s=/$1 last;
}
}
4.定义路由
定义路由的主要原因是便于seo优化,毕竟tp5的默认访问方式是通过多个/来访问的
在route.php里面添加一些路由规则,定义路由规则后,原来的URL地址会失效,变成非法请求。
1)
写在这个return中
return [
//添加路由规则到index控制器的hello操作方法
'hello/:name'=>'index/index/hello'
]
使用[把]:name括起来,就可以不写
2)
第二种定义路由的方法,在route.php开头写
use think\Route;
Route::rule('hello/:name','index/index/hello')
3)参数过多的话 在配置文件中设置 pathinfo_depr => '-',其他的也行,便于seo优化
5.生成url地址,便于引用url
1)使用Url::Build()或者url()来生成url地址,建议用url,以下这四种方式输出结果相同
Url::Build("url2","a=1&b=2");
url("url2","a=1&b=2");
url("url2",["a"=>"1","b"=>"2"]);
url("url2",array("a"=>"1","b"=>"2"));
2)"url2",写成这样,会默认的引用当前模块下的当前控制器下的当前方法
3)url("admin/hello/index","a=1&b=2");这样会生成admin模块下的hello控制器下的index操作
4)url(today/2017/20) 路由规则下有的 ,会生成相应的url地址
5)如果设置了url_html_suffix参数的话,生成的URL地址会带上后缀,
'url_html_suffix' => 'html'
thinkphp学习笔记(一)的更多相关文章
- thinkphp学习笔记10—看不懂的路由规则
原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...
- thinkphp学习笔记9—自动加载
原文:thinkphp学习笔记9-自动加载 1.命名空间自动加载 在3.2版本中不需要手动加载类库文件,可以很方便的完成自动加载. 系统可以根据类的命名空间自动定位到类库文件,例如定义了一个类Org\ ...
- thinkphp学习笔记8—命名空间
原文:thinkphp学习笔记8-命名空间 新版本(3.2)中采用命名空间的方式定义和加载类库文件,解决多个模块之间的冲突问题,并实现了更加高效的自动加载机制. 需要给类库定义所在的命名空间,命名空间 ...
- thinkphp学习笔记7—多层MVC
原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层 ...
- thinkphp学习笔记6—url模式
原文:thinkphp学习笔记6-url模式 入口文件是应用的唯一入口,因为可以多入口,每个应用可以对应一个入口文件,系统会从rul参数中解析当前请求的模块,控制器,操作.ThinkPHP是区分大小写 ...
- thinkphp学习笔记5—模块化设计
原文:thinkphp学习笔记5-模块化设计 1.模块结构 完整的ThinkPHP用用围绕模块/控制器/操作设计,并支持多个入口文件盒多级控制.ThinkPHP默认PATHINFO模式,如下: htt ...
- thinkphp学习笔记4—眼花缭乱的配置
原文:thinkphp学习笔记4-眼花缭乱的配置 1.配置类别 ThinkPHP提供了灵活的全局配置功能,ThinkPHP会依次加载管理配置>项目配置>调试配置>分组配置>扩展 ...
- thinkphp学习笔记3—项目编译和调试模式
原文:thinkphp学习笔记3-项目编译和调试模式 1.项目编译 在章节2.4项目编译中作者讲到使用thinkphp的项目在第一次运行的时候会吧核心需要加载的文件去掉空白和注释合并到一个文件中编译并 ...
- thinkphp学习笔记2—入口文件
原文:thinkphp学习笔记2-入口文件 在thinkphp中有两个入口文件,一个是项目的入口文件,是index.php在主目录里面,还有一个是thinkphp框架的的入口文件,放在框架目录下面如: ...
- thinkphp学习笔记1—目录结构和命名规则
原文:thinkphp学习笔记1-目录结构和命名规则 最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快 ...
随机推荐
- Brophp框架开发时连接数据库读取UTF8乱码的解决(转)
Brophp框架开发时连接数据库读取UTF8乱码的解决办法 (2012-09-15 10:41:22) 转载▼ 标签: 杂谈 it php 分类: 建站技术 Brophp框架开发时连接数据库读取UTF ...
- [2015hdu多校联赛补题]hdu5384 Danganronpa
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5384 题意:函数f(A, B)定义:A.B为字符串,f(A, B)为A中有多少个不同的B(ex:f(& ...
- Java对象的序列化和反序列化
对象的序列化是指将对象转换为字节序列的过程 对象的反序列化是指将字节序列恢复对象的过程 主要有两种用途: 1.把对象的字节序列永久地保存在硬盘上,通常放在一个文件中. 2.在网络上传输对象的字节序列. ...
- DNX SDK版本 “dnx-clr-win-x86.1.0.0-beta5”无法安装
打开VS2015,出现 “DNX SDK版本 “dnx-clr-win-x86.1.0.0-beta5”无法安装,该解决方案将对此会话使用DNX SDK版本“dnx-clr-win-x86.1.0.0 ...
- 查看Windows服务器登录日志
本文以Windows7系统为例:[控制面板]——[管理工具]——[查看事件日志]——[Windows日志]——[安全].此时在视图窗口应该可以看到登录信息了,如果需要知道具体信息那么可以点击某条记录或 ...
- (转)oracle中用户删除不了,ORA-01940提示 “无法删除当前已连接用户”
Oracle删除用户的提示无法删除当前已连接用户两种解决方法如下: 1.先锁定用户.然后查询进程号,最后删除对应的进程.在删除对应的用户 SQLalter user XXX account lock; ...
- IE10一下的img标签问题
之前写过的一段简单的demo,后来在IE10以下使用的时候发现无法使用,先上一段代码 HTML: <div class="all" id="box"> ...
- 对Hadoop体系的一点认识
前言:Hadoop体系核心大多源自Google的思想,里面的思想的确很精彩!比如分布式计算,云的思想等,比起其他简单技术,更使得我想写这文章, 虽然这个东东在一般公司不可能用到! 首先由于hadoop ...
- easyui的getRows和appendRow方法使用结果记录
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Yii2 中日志的记录
Yii2自带日志记录,但用起来感觉比较不是很顺手,故自己封装了个方法,如下: /** * 记录日志 * * @param type $msg * @time 2015年8月31日17:46:20 * ...