您现在的位置是:网站首页> 编程资料编程资料
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解_php实例_
2023-05-25
570人已围观
简介 从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解_php实例_
本文实例讲述了从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记。分享给大家供大家参考,具体如下:
用tp3.2.3做了不少项目,但是毕竟要与时代接轨,学习一些新的框架,比如tp5
以下记录一些学习中遇到的问题及解决办法,还有tp3.2和tp5.0的一些区别,适合给用过tp3没用过tp5的童鞋做个参考。
随着学习不断更新......
+++++++++++++++++++++++分割线总是要有的+++++++++++++++++++++++
首先到tp官网下载了一个最新的ThinkPHP5.0.22完整版:

直接扔到了服务器上,解压后目录结构如下:

目录结构整体与tp3.2大同小异,文件夹首字母小写了,应用入口文件 在根目录下 public/index.php,官方文档对public文件夹定义为WEB部署目录(对外访问目录):

配置服务器域名解析的时候需要把项目根目录指向/public:
ServerAdmin 1977629361@qq.com DocumentRoot /var/www/tp/public ServerName tp.oyhdo.com ServerAlias tp.oyhdo.com DirectoryIndex index.php index.html index.htm
根目录下 application/config.php 为应用(公共)配置文件,设置一些常用的配置,以下简称为“配置文件”:

访问网址如下:

访问tp.oyhdo.com等同于访问tp.oyhdo.com/index.php/index/Index/index(默认不区分大小写)
即默认模块index,默认控制器Index,默认操作index
配置文件修改分别为default_module、default_controller、default_action

如果需要强制区分url大小写,修改 url_convert 为false:

配置文件中设置 app_debug 为true,打开应用调试模式,以便开发调试:

【隐藏url中的index.php入口文件】
以Apache服务器为例,首先确认Apache配置文件httpd.conf中开启了mod_rewrite.so模块:

然后把所有【AllowOverride】设为All:

最后修改根目录下 public/.htaccess 文件内容为:
Options +FollowSymlinks -Multiviews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]

【隐藏前台url模块名】
把index模块作为前台,在前台新建了一个User控制器:

正常需要这样访问User控制器的user操作:

为了前台url显示简洁一些,要去掉模块名index,然后就崩了:

如果只有一个模块,可以在 /application/common.php 中添加:
// 绑定当前访问到index模块 define('BIND_MODULE','index');亲测访问成功:

但是项目通常会有前后台的区分,至少两个模块, 用上面的方法绑定index模块后,再访问其它模块就会报错:
(新建了一个admin模块作为后台)


对于多模块的情况,可以在 /application/route.php 中绑定默认模块路由(去掉上面的单模块绑定):
use think\Route; Route::bind('index');前台访问成功:

然后在/public/下新建一个入口文件admin.php,绑定后台模块admin,来访问后台:

send();
后台访问成功:

(修改后台地址只需修改这个文件名即可)
【返回数据】
配置文件中默认输出类型 default_return_type 为html:

直接打印输出字符串、数组,没什么特殊:
public function index() { $str = 'hello,world!'; $arr = array('state'=>1,'msg'=>'success'); //打印字符串 echo $str; //打印数组 var_dump($arr); }
返回json格式数据:
public function index() { $arr = array('state'=>1,'msg'=>'success'); return json($arr); //返回其它状态码或响应头信息 //return json($arr, 201, ['Cache-control' => 'no-cache,must-revalidate']); //xml格式 //return xml($arr); }
(对于只做API开发的情况,可以设置default_return_type为json,直接return $arr即可返回json格式数据)
【渲染模板、分配数据】
如图建立视图层,index.html作为前台首页(内容为“这是首页”):

tp3渲染模板直接在控制器里$this->display(),tp5并不支持。
tp5渲染模板,在控制器中继承think\Controller类,使用 return $this->fetch() 或者使用助手函数 return view():
fetch(); //return view(); } }

tp5分配数据的方式依旧使用 $this->assign():
assign('name',$name); return $this->fetch(); } }index.html页面读取数据:
{$name}
(修改模板引擎标签 配置文件【tpl_begin】、【tpl_end】)

【继承父类控制器】
写一个栗子,新建一个Base控制器作为父类控制器,Index控制器继承Base控制器
在父类控制器中初始化分配数据,子类控制器渲染模板:
Base.php:
assign('haha',$haha); } }Index.php:
fetch(); } }
index.html:
{$haha}
(与tp3.2相比,父类控制器不能是Public控制器)
【配置参数】
tp3.2里面使用C方法设置、获取配置参数
tp5使用助手函数 config() 设置、获取配置参数:
//配置一个参数 config('name','lws'); //批量配置参数 config([ 'info'=>['sex'=>'nan','aihao'=>'nv'] ]); //获取一个配置参数 echo config('name'); //获取一组配置参数 dump(config('info')); //获取一个二级配置参数 echo config('info.sex');
【get传参】
tp5废除了url/参数名1/参数值1/参数名2/参数值2......这样的方式传参,还是老老实实用url?参数名1=参数值1&参数名2=参数值2......这样传吧。
控制器里打印$_GET:
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!
相关内容
- PHP快速排序算法实现的原理及代码详解_php技巧_
- Laravel5.7框架安装与使用学习笔记图文详解_php实例_
- Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法_php实例_
- Laravel框架自定义公共函数的引入操作示例_php实例_
- Laravel框架文件上传功能实现方法示例_php实例_
- PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法_php技巧_
- PHP获取远程http或ftp文件的md5值的方法_php实例_
- php文件操作之文件写入字符串、数组的方法分析_php技巧_
- PHP实现读取文件夹及批量重命名文件操作示例_php技巧_
- ThinkPHP3.2.3框架Memcache缓存使用方法实例总结_php实例_
