Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP、电子邮件模型和电子邮件组件。I';我做了些蠢事_Php_Email_Cakephp_Model_Components - Fatal编程技术网

CakePHP、电子邮件模型和电子邮件组件。I';我做了些蠢事

CakePHP、电子邮件模型和电子邮件组件。I';我做了些蠢事,php,email,cakephp,model,components,Php,Email,Cakephp,Model,Components,我有一个叫做电子邮件的模型,我已经为它构建了很多功能,但是现在我已经开始在电子邮件控制器中发送电子邮件,并且遇到了麻烦 电子邮件组件与模型冲突,它们都被$this->email引用 我的问题是如何重命名组件(返回并更改模型需要大量工作) 另外,我习惯使用rails,所以我认为它应该被称为通知程序。我对控制器类的API进行了一些检查,我非常确定没有简单的解决命名冲突的方法。尽管这可能是一件乏味而耗时的事情,但你最好还是咬紧牙关,重新命名你的模型。如果没有别的,这是一种更易维护和更健壮的方法,这样做

我有一个叫做电子邮件的模型,我已经为它构建了很多功能,但是现在我已经开始在电子邮件控制器中发送电子邮件,并且遇到了麻烦

电子邮件组件与模型冲突,它们都被$this->email引用

我的问题是如何重命名组件(返回并更改模型需要大量工作)


另外,我习惯使用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->...
}

如果斯米奇在分发比基饼干,我就得投这张票。