如何创建全局存储库

时间:2015-12-08 14:37:21

标签: repository global laravel-5.1

在我的应用程序中,我有许多控制器,如CashInControllerCashOutControllerInvoiceController等。对于每个控制器,我在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();
}

现在,我想为每个控制器或全局函数创建一个公共存储库,我可以在我的应用程序中随处使用。

1 个答案:

答案 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();