在我的应用程序中,我有许多控制器,如CashInController
,CashOutController
,InvoiceController
等。对于每个控制器,我在App\Repository\
文件夹中创建了单独的存储库。
有时我需要为许多控制器提供相同的功能或查询。举个例子:
public function months()
{
return [
'January' => 'January',
'February' => 'February',
'March' => 'March',
'April' => 'April',
'May' => 'May',
'June' => 'June',
'July' => 'July',
'August' => 'August',
'September' => 'September',
'October' => 'October',
'November' => 'November',
'December' => 'December'
];
}
public function clients()
{
return Client::all()->lists('name','name')->sort();
}
现在,我想为每个控制器或全局函数创建一个公共存储库,我可以在我的应用程序中随处使用。
答案 0 :(得分:0)
最好是,如果您需要在多个控制器中重复使用大量代码,最好将其添加到作业中。
首先添加一份工作:
php artisan make:job TestJob
您将在App \ Jobs下找到一个新类,在handle方法中添加您的代码:
<?php
namespace App\Jobs;
use App\Jobs\Job;
use Illuminate\Contracts\Bus\SelfHandling;
class TestJob extends Job implements SelfHandling
{
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
//
}
}
然后在任何类中添加以下特征,控制器默认具有该特征:
use DispatchesJobs;
无论您何时需要分派作业,请运行该代码:
$this->dispatch(new TestJob());
对于简单函数,您可以创建Helper类,在App下创建Helper目录,然后创建一个新类:
<?php
class MyHelper
{
public static function test()
{
return "hello";
}
}
在composer.json
:
"autoload": {
"classmap": [
"database",
"app/Helpers/MyHelper.php"
然后在您的课程中执行以下操作:
MyHelper::test();