在模型中使用cakephp组件

在模型中使用cakephp组件,php,cakephp,cakephp-1.3,Php,Cakephp,Cakephp 1.3,如何在一个模型类中使用在cakePHP中创建的组件?这可能吗 如果是这样,请让我知道如何做到这一点。这是可能的,但在一个框架中,这是非常糟糕的做法。如果您认为您需要在模型中使用组件,那么您应该重新思考并重新组织您的代码,因为有明显的错误 组件被认为在控制器之间共享代码,仅在控制器之间共享 组件 组件 组件 在模型之间共享可重用代码是一种行为。对于视图,它将是一个助手 如果您有一些真正通用的代码,那么它应该是一个lib,或者将其放在实用程序文件夹/名称空间中,或者创建一个新的名称空间。检查那里

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


如果是这样,请让我知道如何做到这一点。这是可能的,但在一个框架中,这是非常糟糕的做法。如果您认为您需要在模型中使用组件,那么您应该重新思考并重新组织您的代码,因为有明显的错误

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

  • 组件
  • 组件
  • 组件
在模型之间共享可重用代码是一种行为。对于视图,它将是一个助手

如果您有一些真正通用的代码,那么它应该是一个lib,或者将其放在实用程序文件夹/名称空间中,或者创建一个新的名称空间。检查那里现有的类,了解要放在那里的内容


没有提供任何代码,因此不可能就如何重构它给出任何真正的建议。但是,您希望使用现有代码的方式在MVC环境中不起作用,因此需要重新考虑您尝试执行的任何操作。

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

灵感来源于一个在模型中使用名为“Geocoder”的组件的示例:

App::import('Component','GeoCoder');
$gc = new GeoCoderComponent(new ComponentCollection);
然后可以使用
$gc
调用组件的函数

--

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

@AD7six

// Use anywhere
AuthComponent::user('id')

// From inside a controller
$this->Auth->user('id');
从cake PHP文档中,他们提供了
AuthComponent::user('id')
,以便可以在控制器以外的地方使用它


也许我需要一个更大的提示,但是为什么我的模型不能访问ACL信息呢

而且它被用在不同的地方,最好以lib的形式组织起来。有时我们的传感器也会给我们压力,因为他们不知道什么是mvc-arch(我认为)。“截止日期”是不编写正确代码的一个很糟糕的借口。没有什么需要“工作”的,只要把它放在正确的地方就行了。做得不好就是在玩Jenga:四处移动代码,堆积垃圾直到崩溃。只需几分钟就可以将代码移动到正确的位置,除非整个“架构”已经完全搞砸了。你最终将陷入一个无法维护的混乱局面,在某个时候,维护和调试的成本将变得非常昂贵。你误解了我的意图。我以前在大学里读过代码全集2,所以我会在专业上写出更好的代码。我在自己的时间阅读PSR标准,以便在日常工作中实施它们。我希望我能明确自己的来历——我是一名“强迫症完美主义程序员”,我不会故意在代码上偷工减料。我每天都会学到一些新东西,六个月后做同样的工作会更有效率,我接受。根据你关于截止日期的想法,请参考铁三角。生产任何好东西都需要时间。我希望这不是真的,但有时必须采用低效的技术——不能既吃蛋糕又吃蛋糕!你应该看看离岸国家的办公室是如何工作的,从而感受到恐惧和恐慌驱动的发展,在这种发展中,经验不足的人完成更复杂任务的时间更少了。@YisraelDov,这应该被看作是一种暗示,你的模型中不需要这些类,应该寻找不同的解决方案。