| 
					
				 | 
			
			
				@@ -0,0 +1,49 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<?php 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+namespace demo\Controllers; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use Silex\Api\ControllerProviderInterface; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use Silex\Application; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+use Silex\ControllerCollection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class BlogControllerProvider implements ControllerProviderInterface { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const MAGIC = 'xyzzy'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * Returns routes to connect to the given application. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * @param Application $app An Application instance 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * @return ControllerCollection A ControllerCollection instance 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  public function connect(Application $app): ControllerCollection { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // This is a factory service, producing a new instance every time. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $collection = $app['controllers_factory']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $blog = BlogController::class; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $collection->get('/',             "$blog::index") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->bind('blog_list'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $collection->get('/{id}',         "$blog::index2") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->assert('id', static::MAGIC) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // Serve '(mount)/xyzzy' when asked for '(mount)'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->value('id', static::MAGIC) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->bind('blog_mount'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $collection->get('/json',         "$blog::json"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $collection->get('/json-view',    "$blog::jsonView"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $collection->get('/{id}',         "$blog::fifiAction") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->assert('id', '\d+') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // See Symfony expression language. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->when("request.headers.get('User-Agent') matches '/firefox/i'"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $collection->get('/{id}',         "$blog::show") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->assert('id', '\d+') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // Serve '(mount)/1' when asked for '(mount)/'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->value('id', 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ->bind('blog_post'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return $collection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |