以API为中心的应用程序结构-每个模型一个控制器?

时间:2019-05-18 19:14:35

标签: php model controller domain-driven-design application-structure

前阵子,我问了一个关于API中心应用程序的应用程序目录结构的问题,有关应用程序目录结构的问题。

Organizing directory structure of an API centric web application

随着我的应用程序的增长以及我的数据库可以看到更多的表,我面临的结构是数据库中每个模型一个控制器,每个表一个模型。每个模型只有一个控制器是有效的方法吗?

添加更多表时如何管理应用程序的大小?

控制器

<?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

0 个答案:

没有答案