• TP5.x——initialize()中如何return


    前言

    首先在tp框架中initialize中是无法直接通过return来返回任何值的,return并不会造成脚本的中断!

    环境:PHP 7.0.4 | TP5.1

    说明

    initialize方法

    首先initialize方法是TP框架自定义的一个控制器初始化函数,在thinkphplibrary hinkController.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;
                }
            }
        }
  • 相关阅读:
    rocketmq详解
    rocketmq的windows版客户端的启动步骤
    postman提交数组格式方式
    关于springmvc的包含list提交的格式
    数据库字段和实体类和map中对应类型
    怎么连接两个数据库和怎么停止上一个线程
    IDEA 创建类是自动添加注释和创建方法时快速添加注释
    centOs7 安装mysql8
    CentOS7安装Nginx及配置
    windows安装mysql8详解
  • 原文地址:https://www.cnblogs.com/wangyang0210/p/10818644.html
Copyright © 2020-2023  润新知