Completed
Push — master ( 9be0de...4e104c )
by Enrico
06:20
created

CRUDControllerProvider   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 95.83%

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 4
dl 0
loc 49
ccs 23
cts 24
cp 0.9583
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getSchemaId() 0 1 1
A __construct() 0 5 1
B connect() 0 36 2
1
<?php
2
3
namespace Resourceful;
4
5
use Silex\Api\ControllerProviderInterface;
6
use Silex\Application;
7
8
class CRUDControllerProvider implements ControllerProviderInterface
9
{	
0 ignored issues
show
Coding Style introduced by
The opening class brace should be on a newline by itself.
Loading history...
10
	private $schemaId;
11
12
	public function getSchemaId(){return $this->schemaId;}
13
14 1
	public function __construct($schemaId)
15
	{
16 1
		assert (!empty($schemaId));
17 1
		$this->schemaId=$schemaId;
18 1
	}
19
	
20 1
    public function connect(Application $app)
21
    {
22 1
		$routeName=$schemaId=$this->getSchemaId();
23
		
24 1
		if(isset($app["$routeName.controller"])){
25
			$app->abort(500,"Route $routeName mounted twice");
26
		}
27
		$app["$routeName.controller"] = function() use($schemaId){
28
			return new CRUDResourceController($schemaId);
29
		};
30
			
31
		// define middleware handlers
32 1
		$addCrudSchemaHandler = new SchemaHandler($schemaId, "crud");
33 1
		$addSchemaProfileHandler = new DescribedBySchemaHandler($schemaId);
34
		
35
		// define crud controllers
36 1
		$controllers = $app["controllers_factory"];
37 1
        $controllers->post("/", "$routeName.controller:create")
38 1
			->before($addCrudSchemaHandler)
39 1
			->after($addSchemaProfileHandler)
40
		;
41 1
        $controllers->get("/{id}", "$routeName.controller:read")
42 1
        	->bind($routeName)
43 1
			->before($addCrudSchemaHandler)
44 1
			->after($addSchemaProfileHandler)
45
		;	
46 1
        $controllers->put("/{id}", "$routeName.controller:update")
47 1
			->before($addCrudSchemaHandler)
48 1
			->after($addSchemaProfileHandler)
49
		;
50 1
        $controllers->delete("/{id}","$routeName.controller:delete")
51 1
			->before($addCrudSchemaHandler)
52
		;
53
		
54 1
        return $controllers;
55
    }
56
}
57