【问题标题】:CodeIgniter - where to put functions / classes?CodeIgniter - 在哪里放置函数/类?
【发布时间】:2012-02-23 11:10:29
【问题描述】:

在理解类应该在 CI 中保存的位置时遇到问题。我正在构建一个描述/销售手机的应用程序。

我希望我的所有功能(即 getphone、getdetails 等)都驻留在一个名为 Mobile 的类中 - 我知道该文件应称为 Mobile.php 并驻留在控制器文件夹中。

然后我可以在 Mobile.php 中拥有多个函数吗?例如

public function getphone() {
   xxx
   xx
   xx
}

public function getdetails() {
   xxx
   xx
   xx
}

或者我需要将每个函数放在自己的类中吗?

非常感谢查看一些有效的示例代码。我已经浏览了文档和谷歌几个小时,并尝试了 URL 中的各种变体来找到一个测试类,但没有太多运气!我什至弄乱了路线和 .htaccess...

我想要达到的目的如下:

http:///model/HTC-Desire/ 被重新路由到一个接受 HTC-Desire 作为参数的函数(因为我需要它来进行数据库查找)。默认控制器工作正常,但此后无法正常工作。

有什么想法吗?

谢谢

【问题讨论】:

    标签: codeigniter codeigniter-2


    【解决方案1】:

    其实是这样的:

    如您所知,控制器和模型会转到它们的透视文件夹

    如果你想创建不是对象方法的函数,你必须创建一个帮助文件。更多信息在这里: http://codeigniter.com/user_guide/general/helpers.html

    现在,如果您想创建自己的数据类型(不扩展模型和控制器的类),请将它们添加到库文件夹中。因此,如果假设您要创建一个“汽车”类,则创建此文件:

    class Car{
    
       function __construct(){}
    }
    

    并将其作为 car.php 保存在库文件夹中

    要创建 Car 类的实例,您必须执行以下操作:

    $this->load->library('car');
    $my_car = new Car();
    

    在此处了解有关图书馆的更多信息:
    http://codeigniter.com/user_guide/general/creating_libraries.html

    【讨论】:

      【解决方案2】:

      是的,您可以在控制器类中拥有任意数量的函数。可通过 URL /class/function 访问它们。

      您可以在类函数中捕获参数,但不建议这样做。

      class Mobile extends CI_Controller{
      
          public function getPhone($phoneModel=''){
              echo $phoneModel;
              //echo $this->input->post('phoneModel');
          }
      }
      

      http://site.com/mobile/getPhone/HTC-Rad 理论上会呼应“HTC-Rad”。 但是,默认情况下 CI 中的 URL 中不欢迎特殊字符,因此在此示例中,您可能会遇到“不允许的 URI 字符”错误。您最好传递电话型号 (或任何其他参数)通过$_POST 发送到控制器。

      【讨论】:

        【解决方案3】:

        类可以作为ControllersModels 存在,因为CodeIgniter 实现了MVC pattern。我建议阅读更多相关内容以了解您的类/功能/等。最好有条理。

        在我的脑海中,Pyro CMS 是一个使用 CodeIgniter 构建的应用程序,源代码是免费提供的。我确定还有其他人。

        【讨论】:

          【解决方案4】:

          我认为最好从一个角度来处理它,即;创建一个包含所有函数的实用程序类。 放置/放置类文件的问题的答案是“库”文件夹。 这在文档中有明确说明。 将您的课程放在库文件夹中

          当我们使用术语“库”时,我们通常指的是 位于库目录中并在中描述的类 本用户指南的类参考。

          您可以阅读有关创建和使用库的更多信息Creating Libraries — CodeIgniter 3.1.10 documentation

          将新创建的类放入库文件夹后,只需在控制器中加载库即可使用,如下所示:

          $this->load->library('yourphpclassname');
          

          如果您希望在构造函数中接收多个参数,则必须对其进行修改以接收一个数组参数,然后您的加载/初始化将略有不同,如下所示:

          $params = array('type' => 'large', 'color' => 'red');
          
          $this->load->library('yourphpclassname', $params);
          

          然后,要访问类中的任何函数,只需按如下所示进行:

          $this->yourphpclassname->some_method();
          

          我希望这能回答您的问题,如果您还有其他问题,请发表评论,我会很好地回复他们。

          【讨论】:

            猜你喜欢
            • 2020-04-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-14
            • 1970-01-01
            • 1970-01-01
            • 2011-12-23
            • 1970-01-01
            相关资源
            最近更新 更多