今天用 Laravel 的查询构造器写事务提交代码,出现了一个坑。
Laravel 官方文档 http://laravelacademy.org/post/6133.html 事务提交最重要的失败之后捕获错误的案例代码没有提供。而且 Laravel 本身自己搞了一套异常处理类,但是在文档里面没有明确指出该使用哪个异常处理类捕获事务提交失败的代码,我还是借助搜索引擎查到 https://segmentfault.com/a/1190000008268648 文章中讲到用\Illuminate\Database\QueryException
来捕获异常。而文档开头对异常处理的讲解篇幅也很少, http://laravelacademy.org/post/5774.html 只讲了用户如何自己定义自己的异常处理类,没有列出 Laravel 本身的某些服务需要用哪些异常处理类捕获。如果没有这篇文章的话,我都可能要自己去一个一个的翻源码了。(然而 Laravel 看源码也麻烦,得先看 Facades 上代理了哪些类的哪些方法,然后一个一个去找实现类,然而实现类里面又是层层调用和跳转,对于涉世未深的 PHPer 来说真的很麻烦)
还有就是 session 部分, Laravel 中自己实现了一套 session 驱动,虽然在文档中也说明了。但是没有明确指出 file 驱动使用的并不是 php 自带的 session 处理句柄(在别的框架中file驱动默认都是用php原生session处理),导致在 sf.gg 等网站上有大量提问都是关于“为什么 Laravel 中无法使用 php 原生 session 处理函数”的问题。还有就是文档中没有写明如果中途使用 exit 等函数强制终止脚本 之前必须要用 Session::save()立即保存 session 数据,这个在 sf.gg 上也有很多人提问。
你们是如何看待这些“坑”?其他框架的文档中是否也有类似的情况?(此贴不是单纯对开源项目的吐槽还请大家轻喷,我当然愿意为官方文档的完善贡献一些力量)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.