PHP CodeIgniter模型具有相同的名称

时间:2018-02-12 05:05:14

标签: php codeigniter namespaces codeigniter-3

我需要你的帮助! 我有2个同名的模型

1 .... application / admin / user / models / User_model.php,使用此代码:

 <?php 
        defined('BASEPATH') OR exit('No direct script access allowed');

        class User_model extends CI_Model

     ?>

2 .... application / front / user / models / User_model.php,使用此代码:

<?php 
    defined('BASEPATH') OR exit('No direct script access allowed');

    class User_model extends CI_Model
 ?>

两个班级没有差异。 我需要使用application/admin/user/models/User_model.php 来自application/front/user/controllers/User.php

我尝试进行以下更改: 如果我像这段代码那样添加application/front/user/models/User_model.php命名空间:

<?php namespace customers;
        defined('BASEPATH') OR exit('No direct script access allowed');

        class User_model extends \CI_Model
 <?

application/front/user/controllers/User.php开始,我致电application/admin/user/models/User_model.php总是给我一个错误,因为application/front/user/models/User_model.php未加载。

如果我从application/front/user/models/User_model.php删除命名空间,我的代码始终会转到此模式,而不是admin/user/user_model。 我需要避免更改admin/user/User_model.php,因为很多类都使用此MODEL.I只能更改front/user/User_model.php 但我需要使用admin/user/user_model

我这样调用application / admin / user / models / User_model.php:

$this->load->model('user_model'); 

我需要加载application / admin / user / models / User_model.php

请帮帮我!!!! 谢谢! Ani

2 个答案:

答案 0 :(得分:3)

这是不可能的,因为Codeigniter不支持命名空间

通常你会看到像

这样的错误
Fatal error:  Cannot declare class `User_model`, because the name is already in use

但Codeigniter阻止了这一点,因为它不会加载任何已加载的模型。您可以看到此here

因此,摆脱痛苦的唯一方法就是简单地重命名你的模特 - 即使你不想;)

答案 1 :(得分:1)

希望这有助于你

您可以在以下模型中创建子目录:

application/models/admin/User_model.php

application/models/user/User_model2.php

加载模型如下:

   $this->load->model('admin/User_model');
   $this->load->model('user/User_model2');

您应该将模型分配给不同的对象名称,您可以通过加载方法的第二个参数指定它:

像这样使用它们:

   $this->load->model('admin/User_model', 'admin_model');

   $this->admin_model->some_method();

   $this->load->model('user/User_model2', 'user_model');

   $this->user_model->some_method();

更多信息:https://codeigniter.com/user_guide/general/models.html