昨天和小伙伴们交流Laravel,讲了他很多好话,Laravel很多的设计非常符合我的程序美学: 提高变成效率的调用方式 + 各种用心的代码提示。
此文会不断更新
updated @ 2015-6-14
1. dd()
dd();
// 约等于以下代码
var_dump();
die();
把调试时候最常用的两行代码缩减成一行,这实在是个绝妙的主意,很快dd()就成为了我最常用的函数。
由于内部调用了Symfony的VarDumper组件,dd()输出要比vardump()更加直观可读,甚至我觉得比启用了xdebug的vardump()还要好。
2. Cache::remember()
// Laravel 中这么用:
$html = \Cache::remember($cache_key, $ttl, function () use ($url, $default) {
return (new \HttpClient())->get($url) ? : $default;
});
// 正常需要这么写:
$html = \Cache::get($cache_key);
if ( !$html ) {
$html = (new \HttpClient())->get($url) ?: $default;
\Cache::put($key, $cache_key, $ttl);
}
return $html;
虽然看起来没差多少行,但是从代码的内聚性上,我很喜欢Laravel的做法。
3. Redirect with Inputs
针对常见的表单提交验证失败需要用户重填的场景,Laravel提供了一个方便的设计:
Redirect::route('posts.create')
->withErrors($post->getErrors())
->withInput();
具体解释参见: 官方文档
4. 5.1对config/app.php做的小改动
5.0 => 5.1的更新文档中没提到config/app.php有改动,后来意外发现了这个有趣的变化:
// 5.0:
'App' => 'Illuminate\Support\Facades\App',
// 5.1 changed to:
'App' => Illuminate\Support\Facades\App::class,
将对IDE无意义的字符串替换为有意义的常量,这个技巧真不错,在其他不少地方都能用上。
5. Model的whereXXX()方法
/*
* Model \Room
* @property integer $id
* @property string $status
* @property \Carbon\Carbon $updated_at
* @method static \Illuminate\Database\Query\Builder|\Room whereId($value)
* @method static \Illuminate\Database\Query\Builder|\Room whereStatus($value)
* @method static \Illuminate\Database\Query\Builder|\Room whereUpdatedAt($value)
*/
每个属性ide-helper都帮你生成了默认的whereXXX方法,你可方便的使用 \Room::whereStatus(xxx) 来替代通常 \Room::where('status', xxx) 的查询拼装法。
这样写查询的时候就可以享受AutoCompelte啦! 重构属性名的时候也会更容易,比全局查找字符串强多了。