gpt4 book ai didi

php - zend框架中无冗余的模块化结构(不相互依赖)

转载 作者:行者123 更新时间:2023-12-04 06:18:20 25 4
gpt4 key购买 nike

我正在使用 Zend 框架和 Doctrine 开发小型内容管理系统 (CMS)。为了解释我的问题,我创建了一个简单的结构,我在其中构建了两个模块(Admin、Frontsite),如下面的结构所示​​。

application
- configs
- controllers
- models
- modules
- frontsite
- controllers
-FrontController
-shownewsAction()
...
...
- models
- views
...
...
- admin
- controllers
-NewsController
- models
-news (extends newsbase)
-newsbase
- views
...
...
- views

管理模块处理所有管理请求,而前端模块处理来自访问者的请求。如果我在管理模块中创建模型(即新闻)并允许前端模块的前端 Controller 访问它。然后我的一个模块将依赖于另一个模块。

据我所知,模块化方法的一个目的是保持每个模块不可靠,而不是相互依赖。一个模块可以被移除,而不会对架构中的任何模块产生任何影响。好吧,如果这是模块化方法的目的之一,那么我必须在前端模型中创建相同的模型(新闻)。这将导致我的项目中的冗余,这绝对不是面向对象设计的一部分,因为它会达到其可重用性目的。

第一种方法,我是否需要创建另一个通用模块来保留通用模型并允许其他模块访问它?这是否意味着我的某些模块将只有 VC 架构,并且会从通用模块访问模型?

第二种方法,我正在考虑的是,创建某种服务层来帮助一个模块与另一个模块进行通信,这不会再次相互依赖吗?

另一种方法可能是将所有常见模型转移到库文件夹。所有模块都将从库中访问它们。这样一些模块将成为 VC 模块,但不会依赖于其他模块。通过这种方式,我们可以提高可重用性,消除冗余,并保持模块之间不相互依赖。

行业惯例是什么?任何专家意见!

我在 stackoverflow 和 google 中进行了一些搜索以得到答案。但他们都没有准确地回答我的问题。

一些搜索是

Search 1
Search 2
Search 3
Search 4

最佳答案

我现在只是在做同样的事情。我已经使用“管理”模块和“前端”模块设置了我的 CMS。我将所有模型保存在 application/models - 不在任何一个模块中。

由于这些模型并不专门适用于一个模块,因此最好将它们放在结构中的“上方”模块。

我不知道你有什么设置重新自动加载,但为了信息,我在我的 Bootstrap 中有这个:

protected function _initAutoload() {
$autoloader = Zend_Loader_Autoloader::getInstance();
ini_set('include_path', ini_get('include_path').";".APPLICATION_PATH);
$autoloader->registerNamespace('Models_');
...more code...

}

关于php - zend框架中无冗余的模块化结构(不相互依赖),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6940179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com