66use Hm_Redis ;
77use Hm_AmazonSQS ;
88use Symfony \Component \DependencyInjection \ContainerBuilder ;
9- use Services \Providers \{ Hm_CommandServiceProvider , Hm_EventServiceProvider , Hm_SchedulerServiceProvider , Hm_QueueServiceProvider };
9+ use Services \Providers \{Hm_CommandServiceProvider , Hm_EventServiceProvider , Hm_SchedulerServiceProvider , Hm_QueueServiceProvider };
1010
1111class Hm_Container
1212{
@@ -19,46 +19,50 @@ private function __clone() {}
1919 public static function setContainer (ContainerBuilder $ containerBuilder ): ContainerBuilder
2020 {
2121 if (self ::$ container === null ) {
22- self ::$ container = $ containerBuilder ;
22+ self ::$ container = $ containerBuilder ;
2323 }
2424
2525 return self ::$ container ;
2626 }
2727
2828 public static function bind (): ContainerBuilder
2929 {
30- // Register Hm_DB
31- self ::$ container ->set ('db.connection ' , Hm_DB::connect (self ::$ container ->get ('config ' )));
32-
33- self ::$ container ->register ('db ' , Hm_DB::class)
34- ->setShared (true );
35-
36- // Register Hm_Redis
37- $ redis = new Hm_Redis (self ::$ container ->get ('config ' ));
38- $ redis ->connect ();
39- self ::$ container ->set ('redis.connection ' , $ redis ->getInstance ());
40- self ::$ container ->register ('redis ' , Hm_Redis::class)->setArgument (0 , self ::$ container ->get ('config ' ))
41-
42- ->setShared (true );
43-
44- // Register Hm_AmazonSQS
45- self ::$ container ->set ('amazon.sqs.connection ' , Hm_AmazonSQS::connect (self ::$ container ->get ('config ' )));
46- self ::$ container ->register ('amazon.sqs ' ,Hm_AmazonSQS::class)
47- ->setShared (true );
30+ $ config = self ::$ container ->get ('config ' );
31+
32+ if ($ config ->get ('queue_enabled ' )) {
33+
34+ if ($ config ->get ('queue_driver ' ) === 'database ' ) {
35+ // Register Hm_DB
36+ self ::$ container ->set ('db.connection ' , Hm_DB::connect (self ::$ container ->get ('config ' )));
37+
38+ self ::$ container ->register ('db ' , Hm_DB::class)->setShared (true );
39+ } else if ($ config ->get ('queue_driver ' ) === 'redis ' ) {
40+ // Register Hm_Redis
41+ $ redis = new Hm_Redis ($ config );
42+ $ redis ->connect ();
43+ self ::$ container ->set ('redis.connection ' , $ redis ->getInstance ());
44+ self ::$ container ->register ('redis ' , Hm_Redis::class)->setArgument (0 , self ::$ container ->get ('config ' ))->setShared (true );
45+ } else if ($ config ->get ('queue_enabled ' ) && $ config ->get ('queue_driver ' ) === 'sqs ' ) {
46+ // Register Hm_AmazonSQS
47+ self ::$ container ->set ('amazon.sqs.connection ' , Hm_AmazonSQS::connect (self ::$ container ->get ('config ' )));
48+ self ::$ container ->register ('amazon.sqs ' , Hm_AmazonSQS::class)
49+ ->setShared (true );
50+ }
51+ }
4852
4953 // Register Hm_CommandServiceProvider
5054 self ::$ container ->register ('command.serviceProvider ' , Hm_CommandServiceProvider::class)
51- ->setShared (true );
55+ ->setShared (true );
5256
5357 // Register Hm_QueueServiceProvider
54- self ::$ container ->register ('queue.ServiceProvider ' ,Hm_QueueServiceProvider::class)
55- ->setShared (true );
58+ self ::$ container ->register ('queue.ServiceProvider ' , Hm_QueueServiceProvider::class)
59+ ->setShared (true );
5660
5761 self ::$ container ->register ('scheduler.ServiceProvider ' , Hm_SchedulerServiceProvider::class)
58- ->setShared (true );
62+ ->setShared (true );
5963
6064 self ::$ container ->register ('event.ServiceProvider ' , Hm_EventServiceProvider::class)
61- ->setShared (true );
65+ ->setShared (true );
6266
6367 return self ::$ container ;
6468 }
0 commit comments