Cakephp Components VS Libs and shells


Cakephp Components VS Libs and shells

我正在做一个项目,我很困惑,把什么代码放在哪里。我在这里举一个简单的例子来说明为什么我有点困惑。

想象一下cakephp应用程序中的几个网页,其中可以以某种方式创建一个帐户-与此帐户一起,需要调用模型和库中的其他几个函数(例如压缩某些东西,为帐户创建证书,…)。

考虑到它需要在几个位置完成,并且不完全属于模型(+是相当多的代码),我认为最好的方法是使用组件。

只要你在一个web服务器后面,这个工作很棒,但是如果我也想在Shell中提供所有这些功能呢?-然后我不能使用组件,只能加载库。

这是我可以/想要共享的所有函数/php代码的情况,在两个shell中都有所有可用的逻辑。

问题来了:)=>所以所有的组件都是lib ?在这些库中加载模型/其他库等是否在架构上正确?那么组件的用途是什么呢?,不妨"rm -rf"他们,只使用lib ?

到目前为止,我使用组件的方式是将所有可以/需要在控制器之间共享的进程逻辑放在其中。当我不需要任何模型或只是一组静态函数(例如操作图像)时使用的lib。在使用Shell脚本时,我想要/需要访问这些组件中的逻辑。

有没有人知道我的理解哪里出错了?

你已经给出了所有的答案!

是的,组件的存在是为了在控制器之间共享功能。只有控制器。因此,如果你需要在模型或shell中使用该功能,那么它就错了。

你应该把代码,这是使用我的shell和控制器到模型层(如果它的模型/数据库相关)或库(静态/calc的东西等)。然后这些可以从两边使用。

你可以在库中使用模型,反之亦然。只是要注意不要创建太多的依赖关系和循环关系。这些也很难测试/扩展/修改。

组件用于包装那些lib/model方法,以便快速方便地访问控制器,还可以执行一些更自动和特定于控制器的处理。类似于SessionComponent,它只封装了cakessession类,以在控制器中提供一个简单的会话访问。

顺便说一下:你也可以在命令行环境中使用任务来实现同样的方便包装。