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 上下文一些关键的变量、对象这些东西。

  • 相关阅读:
    SharedPreferences
    短信发送器的实现
    第四周总结
    本周开发工作时间及内容
    自我总结
    随笔
    结对编程
    目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
    八皇后
    数制转换
  • 原文地址:https://www.cnblogs.com/eleven24/p/10848167.html
Copyright © 2011-2022 走看看