TP5.x——initialize()中如何return
前言
首先在tp框架中initialize中是无法直接通过return来返回任何值的,return并不会造成脚本的中断!
环境:PHP 7.0.4 | TP5.1
说明
initialize方法
首先initialize方法是TP框架自定义的一个控制器初始化函数,在thinkphp\library\think\Controller.php中我们可以看到该函数。
/**
* 构造方法
* @access public
*/
public function __construct(App $app = null)
{
$this->app = $app ?: Container::get('app');
$this->request = $this->app['request'];
$this->view = $this->app['view']; // 控制器初始化
$this->initialize(); $this->registerMiddleware(); // 前置操作方法 即将废弃
foreach ((array) $this->beforeActionList as $method => $options) {
is_numeric($method) ?
$this->beforeAction($options) :
$this->beforeAction($method, $options);
}
} // 初始化
protected function initialize()
{}
可以看到初始化的方法是位于构造函数内的,而构造函数是一个没有返回值的特殊函数,所以return是没用的,其实这个还涉及更深的一些原理,但是这里先不做讲解,直接说应该如何返回值。
感兴趣的可以看看这个回答
https://stackoverflow.com/questions/11904255/constructor-returning-value/21099742
解决
我比较简单粗暴直接使用die()方法来返回,当然你也可以使用echo和exit或者die配合
die
/**
* 初始化
*/
public function initialize()
{
$this->_uid = $this->request->param('uid/d');
if ($this->_uid) {
// 访问者控制
if (!$this->is_login() && !in_array($this->request->action(), array('login'))) {
die('非法TOKEN登录,请求接口');
}
}
}
echo
/**
* 初始化
*/
public function initialize()
{
$this->_uid = $this->request->param('uid/d');
if ($this->_uid) {
// 访问者控制
if (!$this->is_login() && !in_array($this->request->action(), array('login'))) {
echo '非法TOKEN登录,请求接口';
die;
}
}
}
TP5.x——initialize()中如何return的更多相关文章
- 【转】Java中try catch finally语句中含有return语句的执行情况(总结版)
Java中try catch finally语句中含有return语句的执行情况(总结版) 有一点可以肯定,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有r ...
- jquery 中的 return false 不起作用
jquery 中的 return false 不起作用 $(".lcId").each(function(e) { if ($(this).attr("checked& ...
- JavaScript 回调函数中的 return false 问题
今天一个同事问了我一个问题,就是在 Ajax 方法中,请求成功后(success)的回调函数中根据响应的值来判断程序是否继续执行,他不解的是在回调函数中已经 return false 了,但是 Aja ...
- C#中yield return用法分析
这篇文章主要介绍了C#中yield return用法,对比使用yield return与不使用yield return的流程,更直观的分析了yield return的用法,需要的朋友可以参考下. 本文 ...
- java finally中含return语句
<java核心技术卷一>中提到过:当finally子句包含return 语句时(当然在设计原则上是不允许在finally块中抛出异常或者 执行return语句的,我不明白为何java的设计 ...
- Java异常处理中finally中的return会覆盖catch语句中的return语句
Java异常处理中finally中的return会覆盖catch语句中的return语句和throw语句,所以Java不建议在finally中使用return语句 此外 finally中的throw语 ...
- 你真的了解try{ return }finally{}中的return?
你真的了解try{ return }finally{}中的return? 今天去逛论坛 时发现了一个很有趣的问题: 谁能给我我解释一下这段程序的结果为什么是:2.而不是:3 代码如下: class ...
- [转!]jQuey中的return false作用是什么
jQuey中的return false作用是什么: 在众多的语句中都有return false的使用,当然对于熟悉它的开发者来说,当然是知根知底,知道此语句的作用,当然也就知道在什么时候使用此语句,不 ...
- 你真的了解try{ return }finally{}中的return?(转)
今天去逛论坛 时发现了一个很有趣的问题: 谁能给我我解释一下这段程序的结果为什么是:2.而不是:3 代码如下: class Test { public int aaa() { int x = 1; t ...
随机推荐
- springboot热部署JRebel插件
激活参考:https://www.52pojie.cn/thread-906163-1-1.html 最后设置为离线,不然每次启动要重新激活 环境idea是2018.1.1版本 JRebel是最新版2 ...
- 通过元类创建一个Python类
通过元类创建一个Python类 最开始学pytohn的时候我们这样定义类 class ClassName: pass 当熟悉了元类的概念之后我们还可以这样创建 ClassName = type(&qu ...
- 【C++札记】类的继承
继承 面向对象的设计思想,类对数据做了封装,并可以加入访问权限,类的继承是面向对象思想的精髓.类的继承可以让新类从以有的类中获得已有的特征.原有类称为基类或父类,新类称为派生类或子类. 语法: cla ...
- Eclipse Block Selection(块选择)快捷键 Alt + Shift + A
说实话,我暂时还没用过这个快捷键.但是不代表以后我也不会用它. Eclipse 有个地方可以专门查看这些小技巧. Help → Tip of the Day 进入下面这个窗口: 将 Unread on ...
- Shiro集成SSM基于动态URL权限管理(二)
这个案例基于上一个demo扩展而来.所以数据库表,在Shiro集成SSM基于URL权限管理(一)开篇的一致.如果上个demo操作的建议重新导入一次,避免出现问题. 而这次都不是通过固定写在方法上的注解 ...
- 使用Git管理版本
原文地址:廖雪峰的网站 Git 是目前世界上最先进的分布式版本控制系统 Git 的历史 集中式 vs 分布式 集中式的版本库是集中存放在中央服务器的.缺点是必须联网.网速慢的情况就会让人抓狂. 分布式 ...
- Qt 中的二进制兼容策略(简而言之就是地址不能变,剩下的就是让地址不变的技巧)
本文翻译自 Policies/Binary Compatibility Issues With C++ 二进制兼容的定义 如果程序从一个以前版本的库动态链接到新版本的库之后,能够继续正常运行,而不需要 ...
- 温故知新-网络基础1-ip地址计算
网络地址换算 1.网络地址分类 A类:0.0.0.0到127.255.255.255 255.0.0.0/8 B类:128.0.0.0到191.255.255.255 255.255.0.0/16 C ...
- Mac 磁盘分区格式
Mac 磁盘分区格式 来源 https://www.chadou.me/p/190 参考文章 macOS磁盘工具帮助 在Mac系统中抹掉(格式化)磁盘的时候,要求选择分区方案,包括GUID分区图.主引 ...
- 并发编程之Disruptor并发框架
一.什么是Disruptor Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易.这个系统是建立在JV ...