我正在使用 CI2.0 和 PHP 5.3
我刚开始使用“Datamapper ORM”,非常棒!!然而他们是关于类名的一个大问题
我有一个名为“users”的数据库表,所以我的 dm 模型是“user”,而且我有一个同名“user”的控制器?
所以在“用户”控制器中使用“用户”模型是不可能的!
解决这个问题的最佳方法是什么?
非常感谢
此致
我正在使用 CI2.0 和 PHP 5.3
我刚开始使用“Datamapper ORM”,非常棒!!然而他们是关于类名的一个大问题
我有一个名为“users”的数据库表,所以我的 dm 模型是“user”,而且我有一个同名“user”的控制器?
所以在“用户”控制器中使用“用户”模型是不可能的!
解决这个问题的最佳方法是什么?
非常感谢
此致
CodeIgniter 的缺点之一是您不能将控制器、模型或库命名为相同的东西。这主要是一个 PHP 问题,因为显然你不能命名任何相同的东西,但可以通过两种方式避免它。
现在我只能推荐你仔细命名你的模型和库。
控制器 - 用户
库 - 用户
模型 - User_model | 用户_m
这很烦人,但现在只是其中之一。
所以在“用户”控制器中使用“用户”模型是不可能的!
嗯,不,不是,您需要更仔细地检查用户指南;)
您可以为模型命名,而不是最初定义的名称:
如果您希望将模型分配给不同的对象名称,可以通过加载函数的第二个参数指定它:
$this->load->model('Model_name', 'fubar');
$this->fubar->function();
我处理它的方式是用 . 结束我所有的控制器名称_controller
。
我也使用 datamapper,所以我有很多名字冲突。对于用户,我有一个用户(模型)和一个User_Controller
.
然后我简单地添加:
$route['user'] = 'user_controller';
到 config/routes.php 文件,瞧。
唯一的缺点是,如果你有一个有很多页面的大型项目(比如我),你最终会得到一个巨大的 routes.php 文件,特别是如果你有很多有很多参数的函数,路由可能会变成真是让人头疼。
我在“项目”的情况下命名为:
控制器:
项目扩展 MY_Controller 扩展 CI_Controller
模型:
ProjectModel 扩展模型
在 View
project/projectManager // 作为主要内容
project/_projectItem // 使用 _ 下划线作为 subView
这工作得很好。
我会建议 :
为控制器保留“用户”和“用户”这两个词,这样您就可以保留好的 url。
只需与模型和控制器的复数或单数使用保持一致。