假设我有一堆“电子邮件”功能-比如用户注册确认或密码恢复电子邮件,或通知更新电子邮件。我可以在哪里“放置”这些函数?我最初的想法是简单地将它们放在控制器中,但我更愿意有一个公共的地方。然后我的想法是专门为电子邮件创建一个新的控制器,但这打破了MVC模式,我的最后一个想法是扩展email_helper.php助手,但如果我这样做了,我就不能做像这样的事情
$this->email->to($email);
因为我得到了一个错误:
Fatal error: Using $this when not in object context in /Applications/XAMPP/xamppfiles/htdocs/elluminate/system/helpers/email_helper.php on line 71
发布于 2012-09-23 20:27:51
您正尝试在静态方法或简单函数中使用$this
。仅当您有对象时,$this
变量才可用。
在MVC和MVC启发的设计模式的上下文中,邮件系统本身将被认为是一个service。服务是模型层的“上层”部分,控制器和视图使用它来与模型层交互。它们有助于将域业务逻辑与表示层(控制器、视图、模板)隔离开来。
服务可以独立于其他模型结构(比如邮件系统),也可以管理domain objects和不同的存储抽象(data mappers、repositories、units of work和/或data access objects)之间的交互。
https://stackoverflow.com/questions/12555960
复制