codeigniter是否有“电子邮件”关键字?

时间:2019-11-25 06:44:09

标签: php codeigniter codeigniter-3

我收到以下错误:

  

遇到未捕获的异常

     

类型:RuntimeException

     

消息:您正在加载的型号名称是已经使用的资源名称:电子邮件

但是,错误是在这里触发的:

if(!class_exists("email"))
{
   $this->load->model("email");
}

因此它不是现有的类,但是已经使用了'email'。 “电子邮件”是codeigniter中的关键字吗?如果没有,我如何找出引发此错误的原因?

1 个答案:

答案 0 :(得分:1)

这是CI的缺陷之一-因为它使用了自己的超全局对象,该对象包含任何已加载的库,模型和第三方库。

  

如果您查看Loader类here,您会发现Codeigniter检查该名称是否已被使用并因此保留。

简而言之: 您的问题是,您已经加载了email库,这意味着您不能再使用它的名称了。

由于Codeigniter并不真正支持名称空间,因此您必须寻找另一种技术来避免命名冲突。 我建议使用严格的命名约定。

例如:

  1. 对于任何型号,您都应该使用_model后缀。
  2. 对于任何自制库,都带有_library后缀。

在您的特定情况下,只需将Email模型重命名为Email_model

  

有关如何加载模型的更多信息,请查看他们的documentation