| 
									
										
										
										
											2024-03-01 14:34:14 +01:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require_once __DIR__."/../vendor/autoload.php"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use NoccyLabs\React\CommandBus\CommandBus; | 
					
						
							|  |  |  | use NoccyLabs\React\CommandBus\CommandRegistry; | 
					
						
							|  |  |  | use NoccyLabs\React\CommandBus\Context; | 
					
						
							|  |  |  | use React\EventLoop\Loop; | 
					
						
							|  |  |  | use React\Promise\Promise; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $commands = new CommandRegistry(); | 
					
						
							| 
									
										
										
										
											2024-03-01 14:59:12 +01:00
										 |  |  | // Register some function to call. The name here is "hello", and it will
 | 
					
						
							|  |  |  | // receive a Context holding the call context. Any passed data will be
 | 
					
						
							|  |  |  | // available as properties on the Context object.
 | 
					
						
							| 
									
										
										
										
											2024-03-01 14:34:14 +01:00
										 |  |  | $commands->register("hello", function (Context $context) { | 
					
						
							| 
									
										
										
										
											2024-03-01 14:59:12 +01:00
										 |  |  |     // You don't have to, but you should return a promise from your 
 | 
					
						
							|  |  |  |     // commands.
 | 
					
						
							| 
									
										
										
										
											2024-03-01 14:34:14 +01:00
										 |  |  |     return new Promise(function (callable $resolve) use ($context) { | 
					
						
							|  |  |  |         Loop::addTimer(1, function () use ($context, $resolve) { | 
					
						
							|  |  |  |             $resolve("Hello, {$context->name}"); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | $commands->register("hello2", function (Context $context) { | 
					
						
							| 
									
										
										
										
											2024-03-01 14:59:12 +01:00
										 |  |  |     // Just returning the value works just fine!
 | 
					
						
							| 
									
										
										
										
											2024-03-01 14:34:14 +01:00
										 |  |  |     return "Hello2, {$context->name}"; | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-01 14:59:12 +01:00
										 |  |  | // Create the bus
 | 
					
						
							| 
									
										
										
										
											2024-03-01 14:34:14 +01:00
										 |  |  | $bus = new CommandBus($commands); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-01 14:59:12 +01:00
										 |  |  | // And execute some commands!
 | 
					
						
							|  |  |  | $bus->execute('hello', ['name'=>'Bob'])->then( | 
					
						
							|  |  |  |     function ($result) { | 
					
						
							|  |  |  |         var_dump($result); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | ); | 
					
						
							| 
									
										
										
										
											2024-03-01 14:34:14 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-01 14:59:12 +01:00
										 |  |  | $bus->execute('hello2', ['name'=>'Bob'])->then( | 
					
						
							|  |  |  |     function ($result) { | 
					
						
							|  |  |  |         var_dump($result); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | ); |