我有一个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();
...
}
}