【问题标题】:Zend Framework model with serviceZend Framework 模型与服务
【发布时间】:2010-02-11 21:06:47
【问题描述】:

我有一个关于 Zend 框架的问题,主要是模型部分。我知道没有抽象模型类并且理解为什么。我写了很多关于它的博客文章,但找不到任何可以清楚地向我解释的例子。我正在构建一个非常基本的应用程序。假设我们只有三张桌子。 company(ID, name, street, streetNo, Town), meta(ID, name, description), company2meta(ID, companyID, metaID, value, note)。所有类型的关系都在那里(1n n1,nm)。还需要带有值对象的服务(amf)。所以,这是我的想法:

  1. 我将在 /model/dbTables/(Company.php, Meta.php, Company2Meta.php) 下创建三个表类。

  2. 然后在models/中添加User.php(基础类),它应该有saveCompany...、deleteCompany、getCompanyMeta...等方法,并在选定的表上进行操作。

  3. 服务类(/services/CompanyService.php),将在构造函数中创建模型的实例,并具有与模型相同的方法。

这是我的问题。数据应该如何流动,应该在哪里做?例如,当我在服务类中调用 getCompany 时,我希望它返回值对象,其中包含有关公司及其元数据的所有信息。如果没有模型类,a 可以从 mate2company 获取行表公司和行集并将其转换为值对象,当我想更新它时,我需要保存有关公司的信息及其所有元数据(需要找到新的(插入)、旧的(更新)并删除已删除的...)那么应该在哪里完成呢?在模型中还是在服务中?我希望你能明白我在问什么。

ps:对不起我的英语......

【问题讨论】:

    标签: apache-flex zend-framework model


    【解决方案1】:

    你的用户模型应该是这样的:

    class App_Model_User
    {
        protected $_data = array(
            'id' => null,
            'username' => null,
            'companyId' => null,
            'company' => null
        );
    
    public function setId($id)
    {
        $this->_data['id'] = $id;
    }
    
    public function getId()
    {
        return $this->_data['id'];
    }
    
    //Other setters getters..
    
    public function setCompany(Cms_Model_Company $company)
    {
        $this->_data['company'] = $company;
    }
    
    public function getCompany()
    {
        if (null == $this->_data['company']) {
            $this->setCompany(Cms_Service_Company::find($this->_data['companyId']));
        }
    
        return $this->_data['company'];
    }
    }
    

    因为用户和公司是另一个团体,所以他们必须是另一个模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多