Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将codeigniter 2.0与Datamapper一起使用时发生类名冲突?_Php_Database_Codeigniter_Codeigniter 2_Codeigniter Datamapper - Fatal编程技术网

Php 将codeigniter 2.0与Datamapper一起使用时发生类名冲突?

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”的控制器 因此,在“用户”控制器中使用“用户”模型是不可能的 解决这个问题的最好办法是什么 非常感谢 致意 因此,在 “用户”控制器是不可能的 嗯,不是,你需要更仔细地检查用户指南;) 您可以为您的模型指定一个与最初定义不同的名称: 如果您希望指定您的模型 您可以使

我在PHP5.3中使用CI2.0

我刚开始使用“DataMapperORM”,它非常棒!!然而,关于类的名称,它们的名称是一个大问题

我有一个名为“users”的数据库表,所以我的dm模型是“user”,还有一个名为“user”的控制器

因此,在“用户”控制器中使用“用户”模型是不可能的

解决这个问题的最好办法是什么

非常感谢

致意

因此,在 “用户”控制器是不可能的

嗯,不是,你需要更仔细地检查用户指南;)

您可以为您的模型指定一个与最初定义不同的名称:

如果您希望指定您的模型 您可以使用其他对象名称 通过的第二个参数指定它 加载功能:


CodeIgniter的一个缺点是,您不能将控制器、模型或库命名为相同的名称。这主要是一个PHP问题,因为很明显,您不能命名任何相同的名称,但可以通过两种方式避免

  • PHP名称空间-不行,它们只是PHP5.3,如果实现它们,90%的社区都会启动
  • 控制器前缀-这是我想添加的东西,但是。。。好吧,它会为每个人打破东西。我们至少要等到2.1才能做出这么大的改变
  • 现在我所能推荐的就是仔细命名模型和库

    控制器-用户
    图书馆-用户
    模型-用户模型|用户模型


    这很烦人,但现在只是其中之一。

    您需要做的就是将控制器文件名和类名更改为“Users”。您不需要更改模型名称

    控制器:用户
    型号:用户
    数据库表:用户

    请看一下。我建议:

    • 控制器-用户或/和用户
    • 库-用户库或用户库或用户库或用户库
    • 模型-用户模型或用户模型或用户模型
    保留“用户”和“用户”这两个词作为控制器,这样您就可以保持良好的url


    只需与模型和控制器的复数或单数用法保持一致。

    我在“项目”这样的情况下命名:

    控制器:
    项目扩展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';