我目前正与PHP合作开发服务器客户端应用程序,因此,我试图设计一个参考体系结构来指导我的实现过程。
我真的很喜欢新的平均堆栈文件夹结构和组件/模块的方法,但即使在这里,我也非常努力。
例如:
/<project-name>
index.php
/static
/css
/main.css
/js
/user
userFunctions.js
/bower_components
/jquery
/chart
/fontawesome
/template-engine
...
/scripts
/debug.php
/checkCodingStyle.php
/modules
/user
userDetailsController.php
userListController.php
userDetailsView.php
userListView.php
user.php
userDao.php
/utils
/db
mysql.php
/log
log.php
/lib
/tests
userUnitTest.php有一个叫做“用户”的模块,它基于一个数据模型user.php,具有两个不同的视图和控制器。可以从调用数据访问对象userDao.php的数据库中访问该模型。
MVC + Dao允许我通过关注点分离应用程序的内容和逻辑,还允许模块之间的松散耦合和每个模块内部的强大内聚力。
但是:
模型用户可能也是我在其他模块中需要的东西。假设我们有一个模块事件,我确实想在那里重用数据模型user.php,如果使用一个基于userListView.php的用户选择列表会更好。
我该怎么做?userListView.php包含我需要的所有东西,但是它连接到userListController.php。
当您从另一个模块调用一个数据模型并在另一个模块控制器中重用它时,它是错误/坏的吗?
是否有更好的方法来建立模块之间的接口,比如一个模块可以调用的服务?
发布于 2017-12-12 20:01:54
我认为,使用框架可以很容易地避免您所经历的大部分挣扎。因此,除非您的项目是关于使用赤裸的PHP,否则使用一个框架。
创建开源框架的人会把时间花在解决这类问题上,这样你就可以专注于有趣的事情,而不是花在改变文件的组织方式上。
对于PHP,我建议您看看Symfony项目:
https://symfony.com/six-good-reasons
它有一个很大的代码库,您可以从中学习,因为许多项目都是基于symfony的,或者正在使用它的组件。
还有一个最佳实践列表,其中包括有关组织业务逻辑的信息:
https://symfony.com/doc/current/best_实践/index.html
如果您仍然对框架持怀疑态度,并且希望不使用框架,那么我还推荐这组文章:
创建自己的PHP框架
http://symfony.com/doc/current/create_框架/index.html
希望这能有所帮助!
https://softwareengineering.stackexchange.com/questions/362169
复制相似问题