时间:2021-07-01 10:21:17 帮助过:14人阅读
在 app 文件夹里新建文件夹 Repositories,我们的相关代码都会放到这个文件夹里。然后在这个文件夹里新建一个 Interfaces 文件夹,用来放接口。
在上面的Interfaces目录新建一个文件UserInterface.php
- <!--?phpnamespace App\Repositories\Interfaces; interface UserInterface{public function get_user($user_id);} </pre--> <p></p> <h2> 建立一个接口对应的实现 </h2> <p> </p><pre class="sycode layui-box layui-code-view layui-code-notepad" name="code"><ol class="layui-code-ol"><li><!--?phpnamespace App\Repositories;use App\Entity\User;use App\Repositories\Interfaces\UserInterface; class UserRepository Implements UserInterface{public function get_user($user_id){$user = User::find($user_id);return $user;}} </pre--> <p></p> <p>这里是接口的实现定义你的业务逻辑</p> <h2> 在ServiceProvider中绑定接口 </h2> <p>打开app/Providers/AppServiceProvider, 在register()加入代码:</p> <p> </p><pre class="sycode layui-box layui-code-view layui-code-notepad" name="code"><ol class="layui-code-ol"><li><!--?php namespace App\Providers; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{/** Register any application services.** @return void*/ public function register() { $this--->app->bind('App\Repositories\Interfaces\UserInterface', 'App\Repositories\UserRepository' );}} </li></ol></pre> <p></p> <p>ServiceProvider 是 Laravel IOC 容器实现动态换接口实现的地方,所以我们在这里绑定一下,这样我们在使用的时候,不直接使用接口实现,而是用 ioc 容器解析接口,它会帮你自动找到对应好的实现。 这就意味着,以后需要更换实现,可以在这里更换。</p> <h2> 使用仓库 </h2> <p> </p><pre class="sycode layui-box layui-code-view layui-code-notepad" name="code"><ol class="layui-code-ol"><li><!--?phpnamespace App\Http\V1_0\Controllers\Auth; use Illuminate\Http\Request;use App\Http\V1_0\Controllers\ApiController;use App\Repositories\Interfaces\UserInterface; class LoginController extends ApiController{ public function __construct(UserInterface $User) { $this--->User = $User;} public function qqlogin(Request $request){ $user_id=$request->id; $user = $this->User->get_user($user_id);}} </li></ol></pre> <p></p> <p>在这里使用了依赖注入 </p></li></ol></pre>