Php 将codeigniter 2.0与Datamapper一起使用时发生类名冲突?
我在PHP5.3中使用CI2.0 我刚开始使用“DataMapperORM”,它非常棒!!然而,关于类的名称,它们的名称是一个大问题 我有一个名为“users”的数据库表,所以我的dm模型是“user”,还有一个名为“user”的控制器 因此,在“用户”控制器中使用“用户”模型是不可能的 解决这个问题的最好办法是什么 非常感谢 致意 因此,在 “用户”控制器是不可能的 嗯,不是,你需要更仔细地检查用户指南;)Php 将codeigniter 2.0与Datamapper一起使用时发生类名冲突?,php,database,codeigniter,codeigniter-2,codeigniter-datamapper,Php,Database,Codeigniter,Codeigniter 2,Codeigniter Datamapper,我在PHP5.3中使用CI2.0 我刚开始使用“DataMapperORM”,它非常棒!!然而,关于类的名称,它们的名称是一个大问题 我有一个名为“users”的数据库表,所以我的dm模型是“user”,还有一个名为“user”的控制器 因此,在“用户”控制器中使用“用户”模型是不可能的 解决这个问题的最好办法是什么 非常感谢 致意 因此,在 “用户”控制器是不可能的 嗯,不是,你需要更仔细地检查用户指南;) 您可以为您的模型指定一个与最初定义不同的名称: 如果您希望指定您的模型 您可以使
CodeIgniter的一个缺点是,您不能将控制器、模型或库命名为相同的名称。这主要是一个PHP问题,因为很明显,您不能命名任何相同的名称,但可以通过两种方式避免
图书馆-用户
模型-用户模型|用户模型
这很烦人,但现在只是其中之一。您需要做的就是将控制器文件名和类名更改为“Users”。您不需要更改模型名称 控制器:用户
型号:用户
数据库表:用户 请看一下。我建议:
- 控制器-用户或/和用户
- 库-用户库或用户库或用户库或用户库
- 模型-用户模型或用户模型或用户模型
只需与模型和控制器的复数或单数用法保持一致。我在“项目”这样的情况下命名: 控制器:
项目扩展MY_控制器扩展CI_控制器 型号:
ProjectModel扩展模型 在视图中
项目/项目经理//作为主要内容
项目/projectItem//以u下划线作为子视图
这很好。我处理它的方法是用
\u controller
结束我所有的控制器名称
我也使用datamapper,所以有很多名称冲突。对于用户,我有一个用户(模型)和一个User\u控制器
然后我简单地补充:
$route['user'] = 'user_controller';
转到config/routes.php文件,瞧
唯一的缺点是,如果你有一个包含很多页面的大型项目(比如我),你最终会得到一个巨大的routes.php文件,特别是如果你有很多函数都有很多参数,路由可能会成为一个相当麻烦的问题。谢谢,我知道用户指南的这一部分,但它在我的情况下不起作用,因为“DataMapper模型和CodeIgniter模型非常不同。和CI模型不同,您永远不应该显式加载它们(DataMapper ORM自动处理)“你不能像其他codeigniter模型那样加载数据映射器模型,谢谢你的努力,我真的很高兴appreciate@Jakub您的答案是错误的。@ahmed询问有关在ORM中使用codeIgniter的问题。将
user
重命名为user\u model
如何?谢谢。我想使用名称空间来解决此问题,但据我所知,使用Datamapper是不可能的,请参阅此感谢againNope,名称空间涉及从根本上改变CodeIgniter和Datamapper的工作方式,因此您可以使用您的模型。更容易:)
$route['user'] = 'user_controller';