Cra*_*azy 5 php shell components cakephp
我正在做一个项目,我很困惑,把什么代码放在哪里.我在这里举一个简单的例子来说明为什么我有些困惑.
想象一下在cakephp应用程序中的几个网页,可以以这种或那种方式创建一个帐户 - 与此帐户一起,需要调用来自模型和库的其他几个函数(示例压缩一些,为帐户创建证书,... ).
看到它需要在几个位置完成并且不完全属于模型(+是相当多的代码),最好的方法是使用我想到的组件.
只要你在Web服务器后面,这很有效,但是如果我也希望在Shell中提供所有这些功能呢? - 然后我不能使用组件,只能加载库.
这是我可以/想要共享的所有函数/ php代码的情况,以便在控制器中的两个shell中都具有所有逻辑.
这里有问题:) =>所以我的所有组件都需要是libs?,在这些库中加载模型/其他库等架构是否正确?那么组件的用途是什么?,不妨'rm -rf '他们只使用图书馆?
到目前为止,我使用组件的方式是将所有可以/需要在控制器之间共享的过程逻辑放在其中.当我不需要任何模型或只是静态函数的集合(例如操纵图像的例子)时,我使用了Libs.这样做我在使用Shell脚本时需要/需要访问这些组件中的逻辑.
我的理解出错的地方有什么想法吗?
你自己已经给出了所有答案!
是的,组件的作用是在控制器之间共享功能。仅控制器。因此,如果您需要在模型或 shell 中使用该功能,那么它就错位了。
您应该将我的 shell 和控制器都使用的代码放入模型层(如果其模型/数据库相关)或库(静态/计算内容等)。然后双方都可以使用它们。
您可以在库中使用模型,反之亦然。只是要小心不要创建太多的依赖关系和循环关系。那么这些也很难测试/扩展/修改。
组件可用于包装这些库/模型方法,以便快速方便地访问控制器,还可以进行一些更自动和控制器特定的处理。与 SessionComponent 类似,它仅包装 CakeSession 类以在控制器中提供简单的会话访问。
顺便说一句:您也可以使用任务在命令行环境中执行相同的便捷包装。这些只不过是“shell 组件”。