如何详细解析Laravel ORM中Model::find方法的缓存实现?
- 内容介绍
- 文章标签
- 相关推荐
本文共计830个文字,预计阅读时间需要4分钟。
前言:在项目初期阶段,想要在不改变签名的情况下,为`Model::find`方法添加一个缓存功能,实现即插即用。下面简单介绍一下具体实现方法。
1. 先看下当我们调用Model::find方法时,会发生什么。
前言
前段时间做项目时候,想要在不改变方法签名的情况下,给 Model::find 方法做个缓存。而且想要做到即插即用。下面话不多说了,来一起看看详细的介绍哦。
1.先看一下当我们调用 find 方法时,框架干了什么?
找到 Illuminate\Database\Eloquent\Model 的代码,搜索 find,没有该方法。看来是走了 __callStatic 这个魔术方法。该方法里只有一行代码:
return (new static)->$method(...$parameters);
static 指的是调用该静态方法的类(如果使用的是 UserModel::find(1),则 static 就代表 UserModel 类)。看来是实例化了一个对象,并调用了成员方法。
本文共计830个文字,预计阅读时间需要4分钟。
前言:在项目初期阶段,想要在不改变签名的情况下,为`Model::find`方法添加一个缓存功能,实现即插即用。下面简单介绍一下具体实现方法。
1. 先看下当我们调用Model::find方法时,会发生什么。
前言
前段时间做项目时候,想要在不改变方法签名的情况下,给 Model::find 方法做个缓存。而且想要做到即插即用。下面话不多说了,来一起看看详细的介绍哦。
1.先看一下当我们调用 find 方法时,框架干了什么?
找到 Illuminate\Database\Eloquent\Model 的代码,搜索 find,没有该方法。看来是走了 __callStatic 这个魔术方法。该方法里只有一行代码:
return (new static)->$method(...$parameters);
static 指的是调用该静态方法的类(如果使用的是 UserModel::find(1),则 static 就代表 UserModel 类)。看来是实例化了一个对象,并调用了成员方法。

