Какой шаблон проектирования следует использовать для использования Cloudstorage, например S3 и / или BLOB-объектов Azure?

Я создаю систему электронной почты, которая получает входящую электронную почту с вложениями, а также отвечает на электронные письма; это требует сохранения и хранения вложений в хранилище 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 в контроллеры.

Пожалуйста, порекомендуйте.

0

Решение

Есть много способов поделиться переменной со всеми контроллерами в 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');
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector