2017-05-07 14 views
0

添付ファイル付きの受信電子メールを取得し、電子メールに応答する電子メールシステムを構築しています。 Azure BLOBおよび/またはAWS S3ストレージに添付ファイルを保存して保存する必要があります。S3やAzure BlobのようなCloudstorageの使用にはどのようなデザインパターンを使用しますか?

私は2つのコントローラ、CommentsControllerTicketsControllerを持っています。両方のコントローラはAzure APIまたはAWS Storageを使用してファイルを保存および取得する必要があります。私はすべてのコントローラに紺碧$ blobRestProxyを使用する必要があります上に、私はファイルをアップロードする必要があるときにいつでも見ることができるように

これが私の現在のコード

Class CommentsController extends Controller { 

    $accountKey2 = "xxxxxxxxxxxxxxxx"; 
    $accountName1 = "xxxxxxxx"; 
    $connectionString = "DefaultEndpointsProtocol=http;AccountName=" . $accountName1 . ";AccountKey=" . $accountKey2; 
    $blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString); 


} 

です。

このシナリオで使用するのに適したデザインパターンは何ですか?

私はコントローラに紺碧のインターフェイスを注入するリポジトリパターンを考えています。

お知らせください。

+0

ようこそstackoverflow。特定の問題のコードを提供してください。それはあなたがどれだけ試してみたのかを証明し、他のメンバーがあなたの問題をより良く理解するのを助けます。その時、あなたは問題の文脈を与えます。これらのリンクを確認してください:https://stackoverflow.com/help/mcveそしてhttps://stackoverflow.com/help/how-to-ask –

+1

私は私の質問を更新します、通知をありがとうございます –

+0

ようこそ... :) –

答えて

1

laravelのすべてのコントローラで変数を共有する方法はたくさんあります。これを達成するためにService Providersを使用したいと思います。

最初に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); 
     }); 
    } 
} 

そしてconfig\app.phpファイルのproviders配列にコードの次の行を追加します。

ここで、この変数$blobRestProxyは、以下のようなコントローラで使用できます。

$blobRestProxy = \App::make('blobRestProxy'); 
関連する問題