| 
					
				 | 
			
			
				@@ -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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |