|
@@ -2,11 +2,18 @@
|
|
|
|
|
|
namespace App\Providers;
|
|
|
|
|
|
+use App\Billing\Stripe;
|
|
|
use App\Post;
|
|
|
+use Illuminate\Foundation\Application;
|
|
|
use Illuminate\Support\ServiceProvider;
|
|
|
|
|
|
class AppServiceProvider extends ServiceProvider
|
|
|
{
|
|
|
+ const STRIPE = 'billing.stripe';
|
|
|
+ const STRIPE_KEY = 'services.stripe.key';
|
|
|
+
|
|
|
+ protected $defer = true;
|
|
|
+
|
|
|
/**
|
|
|
* Bootstrap any application services.
|
|
|
*
|
|
@@ -26,6 +33,14 @@ class AppServiceProvider extends ServiceProvider
|
|
|
*/
|
|
|
public function register()
|
|
|
{
|
|
|
- //
|
|
|
+ // Use app->singleton(Stripe::class) instead to obtain a reused instance.
|
|
|
+ // Use app->instance(Stripe::class, $stripe) to replace the instance with another object.
|
|
|
+
|
|
|
+ $app2 = $this->app;
|
|
|
+ $this->app->bind(Stripe::class, function (Application $app) use($app2) {
|
|
|
+ // Yes, there are 3 ways to get to the app in a service closure.
|
|
|
+ return new Stripe($this->app['config'][static::STRIPE_KEY]);
|
|
|
+ });
|
|
|
+ $this->app->alias(Stripe::class, static::STRIPE);
|
|
|
}
|
|
|
}
|