我有一个laravel应用程序,并创建了一个SocialMediaController来获取推特和instagram的最新帖子,并将它们存储在数据库中。
我需要他们是全球都可以访问的,并知道我可以通过国际奥委会访问它。
public function doSomething(App\Http\Controllers\SocialMediaController
$SocialMedia) {
}然而,如果感觉像这样注入一个控制器是错误的。包装这些方法以供全球使用的最佳方式是什么?
发布于 2017-06-18 18:50:04
您似乎想要与另一个控制器共享您在SocialMediaController中的一些逻辑,对吧?
您可以将当前逻辑移动到服务,而不是尝试使用服务容器将控制器实例传递给控制器操作。有关如何创建自己的服务,请参阅Laravel文档中的Service Container和Service Providers。
实现这一点的另一种方法是使用特征。请查看此答案,了解如何执行https://stackoverflow.com/a/30365349/1128918。你最终会得到这样的结果:
trait SocialFeeder {
public function getLatestFromTwitter() {
...
}
}然后,你可以在你的控制器中使用这个新特性:
class SocialMediaController extends Controller {
use SocialFeeder;
public function doSomething() {
...
$tweets = $this->getLatestFromTwitter();
...
}
}https://stackoverflow.com/questions/43655997
复制相似问题