大项目的文件管理

所谓的“大项目”,我这里真没有一个明确的概念。是文件数据达到具体多少个文件?还是业务逻辑模块达到多少个?还是项目的访问量达到多少PV?至今没有一个精确的数字来定义什么程序是“大项目”。这里姑且认为:业务功能模块众多(访问流量流量暂且不理)。纵使业务功能模块再多,就算一个application也可以容纳的下。对于业务模块众多的项目,文件管理解决方案如下:

1、使用子目录。经常业务模块相近的控制器文件可以统一使用controllers的子目录来管理。将这些Controller文件统一放在controllers的子目录中。这样相应的视图文件也会存在于视图目录(views)同一个子目录中。当然models目录也支持子目录的。

2、使用多个入口文件。首先声明,这个方法真的是不常用,或是在特殊情况下的解决方式。不过以往有很多的DoitPHP用户通过qq、邮件联系我,问及这种情况如何处置。如:DoitPHP项目下有博客程序(blog),有文章管理程序(cms),还有商城程序(b2b),还有其它程序。这种情况建议每个独立的项目各自使用各自的application目录。至多共用DoitPHP框架文件。目录结构如下:

  1. - blog
  2. |- config
  3. |- application.php
  4. |- controllers
  5. |- models
  6. |- views
  7. |- widgets
  8. |- library
  9. |- extensions
  10. |- index.php
  11.  
  12. - cms
  13. |- config
  14. |- application.php
  15. |- controllers
  16. |- models
  17. |- views
  18. |- widgets
  19. |- library
  20. |- extensions
  21. |- index.php
  22.  
  23. - b2c
  24. |- config
  25. |- application.php
  26. |- controllers
  27. |- models
  28. |- views
  29. |- widgets
  30. |- library
  31. |- extensions
  32. |- index.php
  33.  
  34. - doitphp
  35. |- core
  36. |- library
  37. |- views
  38. |- DoitPHP.php

每个项目的入口文件代码。

  1. require_once APP_ROOT . '/../doitphp/DoitPHP.php';
  2.  
  3. $config = APP_ROOT . '/application/config/application.php';
  4.  
  5. Doit::run($config);

上面这种方案算是上上策了,如果非要将这些项目合在同一个application目录中,实在不是上上策,不过可以解决。目录结构如下:

  1. - application
  2. |- config
  3. |- blog.php
  4. |- cms.php
  5. |- shop.php
  6. |- controllers
  7. |- blog
  8. |- b2c
  9. |- models
  10. |- views
  11. |- widgets
  12. |- library
  13. |- extensions
  14. |- index.php
  15. |- blog.php
  16. |- shop.php
  17.  
  18. - doitphp
  19. |- core
  20. |- library
  21. |- views
  22. |- DoitPHP.php

同一个application目录,使用不同的入口文件。如上面所示:index.php用于cms项目,blog.php用于blog项目,shop.php用于b2c项目。

入口文件代码格式如下:

  1. require_once APP_ROOT . '/doitphp/DoitPHP.php';
  2.  
  3. $config = APP_ROOT . '/application/config/cms.php';
  4.  
  5. Doit::run($config);

三个入口文件内容,也仅$config(主配置文件)路径不同,这样每个入口文件都加载各自的主配置文件,主配置文件又可以设置具体的控制器目录、模型目录、视图目录等。不同项目的文件使用子目录(如:controllers的子目录),这样文件就便于管理了。尽管如此,还是不推荐这种方案。还是推崇最开始那种方案,多个项目浑在同一个application里,加大代码管理难度,尤其是当多人的开发团队,当对代码开发维护时,增加的管理难度就更明显了。

所以,运用之巧,存乎一心!学会使用DoitPHP框架不能算作高手,能够领悟其中内部原理,又能灵活地与自己所开发的业务需求相结合,才算高手。想要将DoitPHP框架使用的炉火纯青,除了要经过几个DoitPHP开发的项目实践之外,最好有时间阅读下它的源代码。知其然,还要知其所以然,这样我们众PHP程序员才有进步。

原文: http://www.doitphp.com/index/documentation/?articleid=63