Php Laravel结构-依赖注入控制器

Php Laravel结构-依赖注入控制器,php,methods,laravel-5,dependency-injection,structure,Php,Methods,Laravel 5,Dependency Injection,Structure,我有一个laravel应用程序,并创建了一个SocialMediaController,从twitter和instagram获取最新帖子,并将其存储在数据库中 我需要它们能够被普遍使用,并且我知道我可以通过国际奥委会访问它 public function doSomething(App\Http\Controllers\SocialMediaController $SocialMedia) { } 然而,如果感觉像这样注入控制器是错误的。总结这些方法以供全局使用的最佳方法是

我有一个laravel应用程序,并创建了一个SocialMediaController,从twitter和instagram获取最新帖子,并将其存储在数据库中

我需要它们能够被普遍使用,并且我知道我可以通过国际奥委会访问它

public function doSomething(App\Http\Controllers\SocialMediaController 
    $SocialMedia) {

    }

然而,如果感觉像这样注入控制器是错误的。总结这些方法以供全局使用的最佳方法是什么?

您似乎想与另一个控制器共享您在
SocialMediaController
中的一些逻辑,对吗

您可以将当前逻辑移动到服务,而不是尝试使用服务容器将控制器实例传递给控制器操作。有关如何创建自己的服务,请参阅Laravel文档中的和

实现这一目标的另一种方法是使用特质。检查这个答案,看看你是如何做到的。你会得到这样的结果:

trait SocialFeeder {
    public function getLatestFromTwitter() {
        ...
    }
}
然后,你可以在你的控制器上使用这种新特性:

class SocialMediaController extends Controller {
    use SocialFeeder;
    public function doSomething() {
        ...
        $tweets = $this->getLatestFromTwitter();
        ...
    }
}

您似乎想与另一个控制器共享
SocialMediaController
中的一些逻辑,对吗

您可以将当前逻辑移动到服务,而不是尝试使用服务容器将控制器实例传递给控制器操作。有关如何创建自己的服务,请参阅Laravel文档中的和

实现这一目标的另一种方法是使用特质。检查这个答案,看看你是如何做到的。你会得到这样的结果:

trait SocialFeeder {
    public function getLatestFromTwitter() {
        ...
    }
}
然后,你可以在你的控制器上使用这种新特性:

class SocialMediaController extends Controller {
    use SocialFeeder;
    public function doSomething() {
        ...
        $tweets = $this->getLatestFromTwitter();
        ...
    }
}