Hey everyone!
I'm trying to register a new service class with its own service provider and facade in Laravel 11, but I'm having trouble getting it to work.
The service class:
namespace App\Lib\OpenAI\Services;
class OpenAIService
{
// ..... Service methods
}
The service provider:
namespace App\Lib\OpenAI\Providers;
use App\Lib\OpenAI\Services\OpenAIService;
use GuzzleHttp\Client;
use Illuminate\Support\ServiceProvider;
class OpenAIServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
$this->app->singleton('openai', function () {
return new OpenAIService(new Client());
});
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
//
}
}
The facade:
namespace App\Lib\OpenAI\Facades;
use Illuminate\Support\Facades\Facade;
class OpenAIFacade extends Facade
{
protected static function getFacadeAccessor()
{
return 'openai';
}
}
Then in boostrap/providers.php I've added the service provider:
return [
App\Providers\AppServiceProvider::class,
App\Lib\OpenAI\Providers\OpenAIServiceProvider::class
];
However, I'm having trouble figuring out how to register the facade and then use this service globally with OpenAI::someMethod().