Laravel 调试:更好的 Debug 函数 dd => dda
dd
函数用来看变量类型很有帮助,但是有时候我们要查看 Eloquent 数据时,输出是这样的:
Book {#399 ▼
#fillable: array:10 [▶]
#connection: null
#table: null
#primaryKey: "id"
#keyType: "int"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: array:13 [▶]
#original: array:13 [▶]
#relations: []
#hidden: []
#visible: []
#appends: []
#guarded: array:1 [▶]
#dates: []
#dateFormat: null
#casts: []
#touches: []
#observables: []
#with: []
+exists: true
+wasRecentlyCreated: false
}
使用以下函数 dda
:
function dda($model)
{
if (method_exists($model, 'toArray')) {
dd($model->toArray());
} else {
dd($model);
}
}
就能得到我们想要的:
array:13 [▼
"id" => 1
"name" => "name"
"user_id" => 1
"created_at" => "2017-04-18 06:48:42"
"updated_at" => "2017-04-18 06:48:42"
]
dda
等于: dd to array
高认可度评论:
可以写得更通用一些:
可以写得更通用一些:
dda
读作
滴答
是不是改成 instanceof laravel 的arrayable 更好,因为搞不好这个 toArray 需要参数。
Arrayable接口:
从接口可以看出:
toArray
是不需要参数的Eloquent Model 是实现这个接口的:
abstract class Model implements ArrayAccess, Arrayable, Jsonable, JsonSerializable, QueueableEntity, UrlRoutable
,所以toArray
方法在 Model 里是存在的而且不需要参数的:LEO 的写法就像他说的更通用,以防
toArray
方法不存在.阔以啊
可以换一个名字吗
@jltxwesley 我觉得 @96qbhy 说的有道理,
toArray
也有可能是自定义的的方法@yanthink 对,我的意思就是防止一些用户是自定义toArray方法的,没有继承 Arrayable 接口就不自动执行 toArray ,这才符合接口的定义。
这样是不是更加强大一些:
哈哈 看了下评论 函数名字成槽点 :smirk:
那么问题来了,如何直接修改重写全局的dd函数呢?