在模型中使用cakephp组件

use*_*368 15 php cakephp cakephp-1.3

如何在我的一个模型类中使用我在cakePHP中创建的组件?这可能吗?

如果是这样,请告诉我如何才能这样做

bur*_*zum 26

MVC框架中,这可能是非常糟糕的做法.如果您认为需要在模型中使用该组件,则应该重新思考并重新组织代码,因为某些事情是明确错误的.

组件被认为是在控制器之间共享代码,在控制器之间共享.

要在模型之间共享可重用代码,这将是一种行为.对于一个观点,它将是一个帮助者.

如果你有一些非常通用的代码,它应该是一个lib或将它放在Utility文件夹/命名空间中或创建一个新的命名空间.检查那里的现有课程,以了解放在那里的内容.

没有提供代码,因此无法就如何重构代码提供任何真正的建议.但是,您希望使用现有代码的方式在MVC上下文中不起作用,因此有时间重新思考您尝试做的任何事情的方法.

  • 并且它被用在不同的地方,它最好组织成Lib (6认同)

小智 10

可以在模型中使用组件(但如果这是推荐的或最佳实践,我无法评论).

灵感源自原始资源,在模型中使用名为"Geocoder"的组件的示例:

App::import('Component','GeoCoder');
$gc = new GeoCoderComponent(new ComponentCollection);
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用它$gc来调用组件的功能.

-

PS:我不想鼓励糟糕的编程实践,但有时候最后期限的压力(在现实世界的项目中)可能迫使开发人员做出这样的决定.

  • @YisraelDov应该被视为你的模型中不需要这些类的提示,并且应该寻找不同的解决方案. (3认同)
  • "截止日期"对于不编写正确的代码是一个非常糟糕的借口.没有什么需要"工作"只是把它放在正确的地方.不正确的是玩Jenga:移动代码并堆积垃圾,直到它崩溃.除了整个"架构"已经完全搞砸之外,在正确的位置移动代码只需几分钟.你最终会遇到一个难以维护的混乱,在某些时候维护和调试会变得非常昂贵. (2认同)