zoukankan      html  css  js  c++  java
  • Laravel/php 一些调试技巧

    1. 模型属性不知道哪里修改?

    直接覆盖模型的 setAttribute 方法,监测到某一个属性改动的时候,抛一个异常就可以看到堆栈了

    use IlluminateDatabaseEloquentModel;
    
    class Person extends Model
    {
        public function setAttribute($key, $value)
        {
            if ($key == 'xxx') { // 'xxx' 是你想要监听的属性
                throw new RuntimeException;
            }
            
            return parent::setAttribute($key, $value);
        }
    }

    有多个地方修改?抛异常,捕获写 log,然后去 log 里面看。

    use IlluminateDatabaseEloquentModel;
    
    class Person extends Model
    {
        public function setAttribute($key, $value)
        {
            if ($key == 'xxx') { // 'xxx' 是你想要监听的属性
                try {
                    throw new RuntimeException;
                } catch (RuntimeException $e) {
                    Log::error($e->getTraceAsString());
                }
            }
    
            return parent::setAttribute($key, $value);
        }
    }

    2. Try to get property of non-object ?

    $a = null;
    
    var_dump($a->c);

     对于这种场景,我们也可以 try catch,然后在异常处理里面 dump 上下文一些关键的变量、对象这些东西。

  • 相关阅读:
    excel转换为dta格式
    移动pdf
    豆瓣爬虫
    python给证件照换底色
    OS模块
    决策树参数
    Pandas数据连接
    Sklearn用法
    numpy.loadtxt()用法
    单片机基础(五):定时/计数器的工作原理及工作方式
  • 原文地址:https://www.cnblogs.com/eleven24/p/10848167.html
Copyright © 2011-2022 走看看