Я создаю систему электронной почты, которая получает входящую электронную почту с вложениями, а также отвечает на электронные письма; это требует сохранения и хранения вложений в хранилище BLOB-объектов Azure и / или хранилище AWS S3 …
У меня есть два контроллера, CommentsController
а также TicketsController
; оба контроллера должны использовать API-интерфейс Azure или хранилище AWS для хранения и получения файлов.
Это мой текущий код
Class CommentsController extends Controller {
$accountKey2 = "xxxxxxxxxxxxxxxx";
$accountName1 = "xxxxxxxx";
$connectionString = "DefaultEndpointsProtocol=http;AccountName=" . $accountName1 . ";AccountKey=" . $accountKey2;
$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString);}
Как вы можете видеть выше, мне нужно использовать лазурь $ blobRestProxy на каждом контроллере и всякий раз, когда мне нужно загрузить файлы.
Что такое хороший шаблон проектирования для использования в этом сценарии?
Я думаю о шаблоне репозитория, в который я вставлю интерфейс Azure в контроллеры.
Пожалуйста, порекомендуйте.
Есть много способов поделиться переменной со всеми контроллерами в laravel. Я хотел бы использовать Поставщики услуг для достижения этой цели.
Сначала создайте BlobServiceProvider
учебный класс.
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use WindowsAzure\Common\ServicesBuilder;
class BlobServiceProvider extends ServiceProvider
{
public function boot() {}
public function register() {
$this->app->singleton('blobRestProxy', function() {
$accountKey2 = "xxxxxxxxxxxxxxxx";
$accountName1 = "xxxxxxxx";
$connectionString = "DefaultEndpointsProtocol=http;AccountName=" . $accountName1 . ";AccountKey=" . $accountKey2;
return ServicesBuilder::getInstance()->createBlobService($connectionString);
});
}
}
Затем добавьте следующую строку кода в providers
массив в config\app.php
файл.
App\Providers\BlobServiceProvider::class,
Теперь вы можете использовать эту переменную $blobRestProxy
в любом контроллере, как показано ниже.
$blobRestProxy = \App::make('blobRestProxy');
Других решений пока нет …