我有一个FrontendController从前端获取所有请求。由于所有网址都是:
Route::get('/{slug}', 'FrontendController@index');
我需要使用相同的控制器来获取所有实体。我的FrontendController看起来像这样:
use Auth;
use App;
use Cache;
use URL;
use Redirect;
use Session;
use Response;
use App\Country;
use App\I18n;
use App\User;
use App\CMS;
use App\CMSPageContent;
use App\Slugs;
use App\News;
...
...
use App\Http\Controllers\Controller;
我有几个问题:
答案 0 :(得分:1)
根据您使用代码的方式而有所不同。例如,如果您需要Auth登录方法,但没有其他方法,初始化模型或将模型注入该函数将浪费资源。
例如说这是我模型中的一个函数
public function doSomething()
{
//Do stuff
}
我想在我的Controller中调用此函数。我有几个选项,我可以在我的控制器顶部引用模型
use App\MyModel;
我认为这实际上并没有启动模型,它就像一个引用,因此当它被调用时,系统知道在哪里找到它。
我可以将它注入我的函数
public function myControllerFunction(\App\MyModel $model)
{
return $model->doSomething();
}
由于模型被分配给$ model变量,因此使用的资源最多,如果您需要对数据库操作及其功能雄辩的模型,那么这很好。如果您只需要该模型中的一个函数,那么静态调用将使用更少的资源。
在你的模型中使函数静态
public static function doSomething()
{
}
然后在您的控制器中,您可以像这样调用它
public function myControllerFunction()
{
return \App\MyModel::doSomething();
}
这将使用更少的资源并稍微清理代码,因为您不需要在控制器顶部继续引用您的用途