一つの方法は、あなたがローカルと生産環境にしているとき、依存性注入のインスタンスを切り替えることです。
class ControllerExample
{
public function index(SomeInterface $data)
{
//...
}
}
したがって、この例では、コントローラ指数方法が自動的に注入されるSomeInterfaceを必要とします。 ローカルの開発では、このインターフェイスをスタブクラスに解決することができ、の生産の場合は、実際のクラスに切り替えることができます。あなたは)(レジスタに/プロバイダ/ 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はローカルあるとき、これは基本的にされて何あなたのコントローラの依存関係はスタブクラスで解決されます。そうでない場合は、他のenvsでは実クラスになります。
* switch interface *とは、他のデータベースまたは実際のインターフェイスに切り替えることを意味しますか?あなたは、最終結果が欲しいものの例を挙げることができますか? – TheFallen
私はローカルで開発しているときに、私は開発を続けることができるようにハードコードされた値を返すスタブアウトクラスを持っています。例えば、 'getOrders'と呼ばれる関数は、ローカルで開発するときにハードコードされた配列を返しますが、ライブにデプロイするときに、スタブアウトされたクラスではなく、実際のデータベースを使用します。 – Lock