已经用了一段时间的 Laravel 了, 已经有点脑残粉的倾向了, 哈哈哈
再来谈谈 Laravel 松散设计的好处吧, 今天做用户登陆真的给我爽到了.
比如 Laravel 里的登录可以通过 Auth::attempt()
实现:
1. 如果你使用的加密方法与 Laravel 默认的不一样怎么办?
1) 写个加密器, 实现 Illuminate\Hashing\HasherInterface
接口的 make(实现加密), check(加密校验), needsRehash(是否重新生成) 三个方法.
2) 写个 Service Provider, 继承 Illuminate\Support\ServiceProvider
, 用于注册服务.
3) 修改配置 config -> app.php -> providers 替换 Illuminate\Hashing\HashServiceProvider
为你的 HashServiceProvider.
2. 登陆完成 默认 session 里只存了 user 的 id.
获取用户的信息怎么办?
a. 使用 Auth::user()->xxx
, Laravel 会默认帮你到数据库里获取.
如果不想查询数据库, 只想从 session 中获取怎么办? 通过监听事件解决:
name); Session::put('email', $user->email); }); //listen auth logout action Event::listen('auth.logout', function() { Session::clear(); });
Laravel 在执行登录和登出的时候, 已经触发过登录和登出事件了.
诸如上述的设计, 有什么好处? 好处太明显了, 我只要关注我需要改动的地方就可以了, 其他方面框架都帮你解决了.这样可以实现代码的最大化公用.
再说回来, 如果框架代码本身耦合度太高的话, 实现这些东西比较麻烦, 因为逻辑和业务分离太麻烦, 造成的问题是, 很多情况下如果你要修改代码可能需要重写整个方法, 同时还得在方法中重载父类的方法.