我正在构建一个Laravel 5.2
应用程序,该应用程序将连接到我在开发过程中无法使用的数据库(这是我无法在本地安装的旧数据库)。
Laravel构建应用程序的最简洁方法是什么,以便我可以使用一个界面进行开发,然后在将项目推送到实时环境时切换到另一个界面?
过去,我有两个类,它们都具有相同的功能,然后在配置文件中,我会说它使用哪个类。如果有更好的方式使用Laravel,只是徘徊?或者,如果有一种方法可以做到这一点?
答案 0 :(得分:1)
我能想到实现这一目标的一种方法是在本地和生产环境中切换依赖注入的实例。
class ControllerExample
{
public function index( SomeInterface $data )
{
//...
}
}
因此,在此示例中,控制器 index 方法需要 SomeInterface ,它将自动注入。对于本地开发,您可以将此接口解析为存根类,对于生产,您可以切换到真实类。您可以通过在 app()方法中的 app / Providers / AppServiceProvider.php 中注册接口的绑定来执行此操作:
if ($this->app->environment() == 'local') {
$this->app->when('App\Your\ControllerExample')
->needs('App\SomeInterface')
->give('App\YourStubbedClass');
} else {
$this->app->when('App\Your\ControllerExample')
->needs('App\SomeInterface')
->give('App\YourRealClassWorkingWithTheRealDatabase');
}
这基本上做的是当你的env是 local 时你的控制器中的依赖关系将用stub类来解决,否则在其他envs上它将是真正的类。