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

  • 相关阅读:
    平方十位数
    随意组合
    显示二叉树
    四阶幻方
    方格填数
    数字排列
    青蛙跳N阶(变态跳)
    Mysql可重复读、避免幻读原理
    动态规划典型例题--连续子数组的最大和
    行列有序的二维数组查找
  • 原文地址:https://www.cnblogs.com/eleven24/p/10848167.html
Copyright © 2020-2023  润新知