Ориентированная на API структура приложения - один контроллер на модель? - PullRequest
0 голосов
/ 18 мая 2019

Некоторое время назад я задал вопрос о структуре каталогов приложения для приложения, ориентированного на API, относительно структуры каталога приложения.

Организация структуры каталога веб-приложения, ориентированного на API

Поскольку мое приложение растет и в моей базе данных появляется больше таблиц, я сталкиваюсь со структурой, в которой в моей базе данных есть один контроллер на модель и одна модель на таблицу.Является ли использование одного контроллера на модель допустимым подходом?

Как управлять размером приложения при добавлении дополнительных таблиц?

Контроллер

<?php
   namespace controllers; 

   class RiskController
   { 
        private $_params;

    public function __construct($params = [], $endpoint2 = null, $payload = [])
    {
        $this->params = $params;
        $this->payload = $payload;
    } 

    public function get($id = null)
    {
        $service = new \data\service\riskservice();
        if ($id == null)
            return $service->findAll();
        return $service->findOne($id);
    }

    public function post($id = null)
    {
        $service = new \data\service\riskservice();
        return $service->createOne($this->payload);
    } 

    public function put($id = null)
    {
        $service = new \data\service\riskservice();
        return $service->updateOne($this->payload);
    }
 }

Служба

<?php
    namespace data\service;

    class riskservice extends service
    {   
        protected function _getMapper()
        {
            $db = $this->db()->getHandle();  
            return new \data\mapper\risks($db);
        }                                 

        public function findOne($id)
        {
            $mapper = $this->_getMapper();
            $params = array('risk' => $id);
            return $mapper->findOne($params);   
        }
    } 

Базовая служба

<?php
    namespace data\service;

    class riskservice extends service
    {   
        protected function _getMapper()
        {
            $db = $this->db()->getHandle();  
            return new \data\mapper\risks($db);
        }                                 

        public function findOne($id)
        {
            $mapper = $this->_getMapper();
            $params = array('risk' => $id);
            return $mapper->findOne($params);   
        }
    }

enter image description here

...