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



我有一个Laravel应用程序,并创建了一个SocialMediaconTroller,以从Twitter和Instagram获取最新帖子并将其存储在数据库中。

我需要普遍访问它们,并且知道我可以通过IOC访问它。

public function doSomething(AppHttpControllersSocialMediaController 
    $SocialMedia) {
    }

但是,注入这样的控制器感到错误。什么是结合这些全局使用方法的最佳方法?

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

您可以将当前逻辑移至服务。请参阅Laravel文档中有关如何创建您自己的服务的服务容器和服务提供商。

实现这一目标的另一种方法是使用特征。检查此答案有关如何完成该https://stackoverflow.com/a/30365349/1128918。您最终会得到这样的事情:

trait SocialFeeder {
    public function getLatestFromTwitter() {
        ...
    }
}

,然后,您可以与控制器一起使用该新特征:

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

最新更新