假设我有一堆“电子邮件”功能 - 例如用户注册确认或密码恢复电子邮件或通知更新电子邮件。我在哪里可以“放置”这些功能?我最初的想法是简单地将它们保留在控制器中,但我宁愿有一个共同的地方。然后我的想法是创建一个专门用于电子邮件的新控制器,但这打破了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
答案 0 :(得分:2)
您正尝试在静态方法或简单函数中使用$this
。 $this
变量仅在您有对象时才可用。
在MVC和MVC启发的设计模式的背景下,邮件系统本身将被视为service。服务是模型层的“上部”部分,控制器和视图使用它们与模型层交互。它们有助于将域业务逻辑与表示层(控制器,视图,模板)隔离开来。
服务可以独立于其他模型结构(例如邮件系统),也可以管理domain objects与不同存储抽象(data mappers,{{3}之间的交互。 },repositories和/或units of work)。