Laravel Service won't register

269 Views Asked by At

Followed every step from laravel 9 manual, and my service will not register consistently. Don't quite know why but it suddenly breaks and I receive a Target class [thumbnail] does not existerror out of nowhere.

Setup

Service:

namespace App\Services;

  use Illuminate\Support\Facades\Storage;
  use Intervention\Image\Facades\Image;

  class ThumbnailService
  {
    public function storeThumbnail($userId, $file, $scale) {
      $thumbnail_image = Image::make($file);
      $orig_width = $thumbnail_image->width();
      $orig_height = $thumbnail_image->height();
      $thumbnail_image->resize($orig_width * $scale, $orig_height * $scale);

      $thumb_stream = $thumbnail_image->stream();
      $thumb_path = env('MIX_AWS_IMAGES_DIRECTORY') . '/'. $userId . '/thumbnails';
      $thumb_file = $thumb_path . '/' . 'thumb_1_4_' . $file->getClientOriginalName();
      Storage::disk('s3')->put($thumb_file, $thumb_stream->__toString());
      return $thumb_file;
    }
  }

Provider:

namespace App\Providers;

use App\Services\ThumbnailService;
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\ServiceProvider;

class ThumbnailServiceProvider extends ServiceProvider implements DeferrableProvider
{
  /**
   * Register services.
   *
   * @return void
   */
  public function register()
  {
    $this->app->singleton('thumbnail', function() {
      return new ThumbnailService();
    });

  }

  /**
   * Bootstrap services.
   *
   * @return void
   */
  public function boot()
  {

  }

  public function provides()
  {
    return [ThumbnailService::class];
  }
}

Facade:

namespace App\Facades;
use Illuminate\Support\Facades\Facade;

class Thumbnail extends Facade
{
  protected static function getFacadeAccessor() {
    return 'thumbnail';
  }
}

obviously, I did register in app.php in the providers array. But if I inspect the bindings, there is no service... Any help? This is the second time this happened and earlier, I got away with dumping autoload and config:clear and it is currently under my sail dev environment. I don't want this to happen in prod. So help would be appreciated.

0

There are 0 best solutions below