本文解读

为什么在thinkphp3的自定义控制器中,打印输出未定义的变量和给未定义变量赋值没有异常提醒。 自定义控制器不继承基类情况下,获取类未定义变量,给未定义变量赋值。

准备工作

  • 有一个已经能访问的ThinkPhp3站点
  • 开启trace
  • 开启日志记录

如果自定义控制器未继承基类控制器,那么在自定义控制器中,打印输出和给未定义变量赋值报异常,且生成日志文件提醒变量未定义。

<?php

namespace Home\Controller;

class DemoOneController{

    public $name;
    protected function _initialize(){

    }
}

$a = new DemoOneController;
$a->name = 'DemoOne';
$a->age;
$a->age=100;

测试代码

DemoOneController类继承Controller基类 定义了变量:$name 未定义变量:$age

<?php

namespace Home\Controller;

class DemoOneController {

  public $name;
  protected function _initialize(){

  }
}

$a = new DemoOneController;
$a->name = 'DemoOne';
var_dump($a->name);
echo "<br>";
$a->age = 102;
var_dump($a->age);

DemoTwoController控制器继承DemoOneController

<?php

namespace Home\Controller;
use OT\DataDictionary;

class DemoTwoController extends DemoOneController{

    public function index(){
        $this->name;
    }

}

访问Url地址看输出情况

/index.php?s=/Home/DemoTwo/index.html

  1. [8] Undefined property: Home\Controller\DemoOneController::$age /Application/Home/Controller/DemoOneController.class.php 第 15 行.

    相关配置开启

开启Trace信息查看,开启日志记录 从Runtime\Logs中不会出现未定义提醒

<?php
/* 调试配置 */
'SHOW_PAGE_TRACE' => true,
'LOG_RECORD' => true, // 开启日志记录
'LOG_LEVEL'  =>'EMERG,NOTICE,ALERT,CRIT,ERR,WARN,INFO,DEBUG,SQL', // 只记录EMERG ALERT CRIT ERR 错误
点赞(2) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部