Laravel ORM 的一个优化场景

评论中 forehalo 提供了一个更 Laravel 的实现方式:https://laravel.com/docs/5.0/eloquent#eager-loading Laravel 的 Eloquent 可能是最好的 PHP ORM 之一。不过,他也有所有 ORM 框架的通病,就是技术人员在不熟悉框架的情况下进行编码,很容易造成性能问题。之前遇到的一个应用场景。现在简化出来。 有两张表,一张暂定为 user 表,一张为 userinfo 表,现在有个需求是将特定用户抽取出来,然后从 userinfo 表中找到他们的数据,然后显示在页面上。 通常,在 Laravel 中,推荐的方法是使用 Eloquent 的关系函数,比如这样: 在 User Model 里: <?php namespace App; use Il... [阅读全文]

如何实现 PHP 中的 Router

因为最近在写自己的 MFramework, 算是一个 PHP 的 web 框架吧。所以这个 Router 就是首先的一步。 首先看下 Kohana 框架的路由编写方式: Route::set('blogs', 'blogs/((/)(/))')->defaults( array ( 'controller' => 'blog', 'action' => 'list', 'limit' => 10 , 'page' => 0 ) ); 然后是 Zend 的路由设置, 建议阅读他的官方文档:Zend Router: $route = Method::factory(... [阅读全文]

在 Dingo/Api 中实现自定义错误回复

目前在用 Laravel 做一个 APP 后台的开发。因为都是 API,所以需要定义个通用的通信协议。这个比较好解决,而且我之前的思路也都有,具体可以看这篇:设计自认为优雅的接口。这里就不再废话了。 考虑到之后的通用性和可维护性,我们决定使用 Dingo/Api 这个插件进行 API 的管理,开发。所以,理所当然的遇到了这么一个应用场景。 这是使用 Dingo/Api 之后,标准的返回值: url: http://www.ehs.com/api/test/index { "status_code": 100, "message": "成功", "timestamp": 1457267879, "data": "eyJmZmYiOiJmZmYifQ==", "sign": "d550edf4061cd60a404cd1835... [阅读全文]

Laravel Session 相关

本文内容紧接之前的那篇文章,因为个人喜欢没事找事做,所以才会对一些实现细节比较感兴趣。比如 Laravel 的 Session 实现。 既然 Laravel 的 Session 并不是采用 PHP 原生的 Session 框架,那么它的这重起炉灶的一套 Session 机制,有什么更好的地方,或者说更优雅的地方? 我们先来看 PHP 的原生 Session 实现。PHP 初学者,勿喷。。 Session 是什么 自行谷歌或者 Bing。 PHP 原生 Session 机制 这主要涉及三个方面,Session 的生成,回收,存储 Session 的生成 这部分主要见于 PHP 源码,以手头的 PHP7 的源码为例,具体位于 /ext/session/session.c 中的 *php_... [阅读全文]

Laravel Session 失效 Case

这是年前碰到的一个问题,一直拖到现在才有空写记录。 因为公司内部准备转 Laravel 开发框架,所以势必会有一个学习的过程。我对 PHP 基本是一个入门的级别,所以对框架还是陌生的,有个同事遇到一个问题,就是按照官方的示例,写 Session 不成功。 即在 app/Http/route.php 里面,写如下的代码: Route::group(['prefix' => 'Test', 'namespace' => 'Test'], function() { Route::get('/', function() { Session::set('mike', 'mike'); d(Session::get('mike')); // d($value) 就是 var_dump 出来 }); }); 用来做 Se... [阅读全文]