Реализовать шаблон проектирования adpater в приложении laravel - PullRequest
0 голосов
/ 19 июня 2019

Я попытался реализовать шаблон проектирования адаптера в своем приложении laravel.Пришлось использовать больше чем облако для загрузки изображений напр. (Облачное хранилище Google, amazon s3).

1 - я создал интерфейс с именем ImageUploderInterface.

2 - я создал для классов класс AmazonCloudFrontServiceи GoogleCloudStorageService каждый из них реализует ImageUploderInterface.

3 - Я создал поставщика услуг, чтобы зарегистрировать мой интерфейс и вернуть определенный объект из одного класса (AmazonCloudFrontService ИЛИ GoogleCloudStorageService) в зависимости от env varaible.

4- Я зарегистрировал своего поставщика услуг в config / app.php.

5-, затем я пытаюсь внедрить ImageUploderInterface в мой контроллер, но у меня была ошибка, что интерфейс не выходит.

интерфейс загрузки изображений

<?php

namespace App\Interfaces;

interface ImageUploderInterface
{   
   public function uploadImage($file, $uploadFolder);

   public function retrieveImage($fileName, $uploadFolder);
}

поставщик услуг

<?php

 namespace App\Providers;

 use Illuminate\Support\ServiceProvider;
 use App\Interfaces\ImageUploderInterface;
 use App\Services\AmazonCloudFrontService;
 use App\Services\GoogleCloudStorageService;

class ImageUploadServiceProvider extends ServiceProvider
{
/**
 * Register services.
 *
 * @return void
 */
public function register()
{
    $this->app->singleton(ImageUploderInterface::class, function ($app)         {
        switch ($app->make('config')->get('services.image-uploader')) {
            case 'amazon':
                return new AmazonCloudFrontService;
            case 'gcs':
                return new GoogleCloudStorageService;
            default:
                throw new \RuntimeException("Unknown upload image Service");
        }
    });
}
}

Ошибка

сообщение: «Приложение класса \ Interfaces \ ImageUploadInterface не существует», исключение: «ReflectionException»,…} исключение: файл «ReflectionException»: «/ var / www / vendor / laravel / framework / src/Illuminate/Container/Container.php "строка: 826 сообщение:" Приложение класса \ Interfaces \ ImageUploadInterface не существует "

...