Laravel中一些喜欢的细节

昨天和小伙伴们交流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啦! 重构属性名的时候也会更容易,比全局查找字符串强多了。

你可能感兴趣的:(Laravel中一些喜欢的细节)