Laravel/php 一些調試技巧

1. 模型屬性不知道哪裏修改?spa

直接覆蓋模型的 setAttribute 方法,監測到某一個屬性改動的時候,拋一個異常就能夠看到堆棧了code

use Illuminate\Database\Eloquent\Model;

class Person extends Model
{
    public function setAttribute($key, $value)
    {
        if ($key == 'xxx') { // 'xxx' 是你想要監聽的屬性
            throw new \RuntimeException;
        }
        
        return parent::setAttribute($key, $value);
    }
}

 

有多個地方修改?拋異常,捕獲寫 log,而後去 log 裏面看。對象

use Illuminate\Database\Eloquent\Model;

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 ?blog

$a = null;

var_dump($a->c);

 對於這種場景,咱們也能夠 try catch,而後在異常處理裏面 dump 上下文一些關鍵的變量、對象這些東西。get

相關文章
相關標籤/搜索