CakePHP、电子邮件模型和电子邮件组件。I';我做了些蠢事
我有一个叫做电子邮件的模型,我已经为它构建了很多功能,但是现在我已经开始在电子邮件控制器中发送电子邮件,并且遇到了麻烦 电子邮件组件与模型冲突,它们都被$this->email引用 我的问题是如何重命名组件(返回并更改模型需要大量工作)CakePHP、电子邮件模型和电子邮件组件。I';我做了些蠢事,php,email,cakephp,model,components,Php,Email,Cakephp,Model,Components,我有一个叫做电子邮件的模型,我已经为它构建了很多功能,但是现在我已经开始在电子邮件控制器中发送电子邮件,并且遇到了麻烦 电子邮件组件与模型冲突,它们都被$this->email引用 我的问题是如何重命名组件(返回并更改模型需要大量工作) 另外,我习惯使用rails,所以我认为它应该被称为通知程序。我对控制器类的API进行了一些检查,我非常确定没有简单的解决命名冲突的方法。尽管这可能是一件乏味而耗时的事情,但你最好还是咬紧牙关,重新命名你的模型。如果没有别的,这是一种更易维护和更健壮的方法,这样做
另外,我习惯使用rails,所以我认为它应该被称为通知程序。我对
控制器
类的API进行了一些检查,我非常确定没有简单的解决命名冲突的方法。尽管这可能是一件乏味而耗时的事情,但你最好还是咬紧牙关,重新命名你的模型。如果没有别的,这是一种更易维护和更健壮的方法,这样做可能会带来十倍的回报。使用IDE(例如NetBeans)可以让您的生活更轻松。它具有重构/重命名等功能,甚至尝试将引用重命名为其他文件
作为最后手段,搜索/修复也可能很方便
作为程序员,永远不要手动重命名;) 我可能只会使用
sed
。在确保最新版本安全地安装在VCS中后
sed 's/$this->Email/$this->Notification/' -i *php
在相关目录中执行应该可以做到这一点。我猜您可能还需要执行
alter/modify table
语句来重命名该表(我不确定Cake如何处理,因为我以前没有使用过它)。您可以重命名EmailComponent:
/控制器/组件/email_handler.php:
App::import('Component', 'Email');
class EmailHandlerComponent extends EmailComponent { }
控制器:
public $components = array('EmailHandler');
public function foo() {
$this->EmailHandler->...
}
如果斯米奇在分发比基饼干,我就得投这张票。