avz-cmf / zaboy-rest

0 stars 1 forks source link

StoreMiddlewareFactory #8

Closed victorynox closed 8 years ago

victorynox commented 8 years ago

Проверять resourceObject на реализацию интерфейса DataStoresInterface

public function __invoke(ContainerInterface $container, $requestedName, array $options = null) 
    {
        $resourceName = $requestedName;    
        if (!$container->has($resourceName)) {
            throw new RestException(
                    'Can\'t make storeMiddleware witout resourceName' 
                    . ' for resource: ' . $resourceName
            );             
        }  

        $resourceObject = $container->get($resourceName);

        switch (true) {
            case is_a($resourceObject, 'Zend\Db\TableGateway\TableGateway'):
                $tableGateway = $resourceObject;
                $resourceObject = new DbTable($tableGateway);
            case ($resourceObject instanceof DataStoresInterface):
                $dataStore = $resourceObject;
                $resourceObject = new Middleware\StoreMiddleware($dataStore);
            case $resourceObject instanceof \Zend\Stratigility\MiddlewareInterface:
                $storeMiddleware = $resourceObject;
            default:
                if (!$storeMiddleware) {
                    throw new RestException(
                            'Can\'t make StoreMiddleware'
                            . ' for resource: ' . $resourceName
                    );             
                }  
        }
        return $storeMiddleware;
    }    
avz-cmf commented 8 years ago

done