在CodeIgniter中加载自定义类?

时间:2010-12-11 04:43:01

标签: php codeigniter

刚开始使用CodeIgniter,我想导入一些旧类用于新项目。但是,我不想过多地修改它们以适应CI的操作方式,并且我希望能够继续使用NetBeans的自动完成功能,这对CI来说效果不佳。< / p>

那么,加载自定义类的最佳方法是什么?将文件分类到CodeIgniter而不必使用库/模型加载机制?

如果这是我应该能够迅速找到的东西,我道歉,但我似乎无法找到我追求的东西。我看到的一切只是告诉我如何通过CI。

5 个答案:

答案 0 :(得分:20)

要以codeigniter方式执行此操作,请将自定义类放在codeigniter的libraries文件夹中。然后通过在控制器中将该类添加为库来使用它,如下所示:

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

class Someclass {

   public function some_function()
   {
   }
}

/* End of file Someclass.php */

在控制器中使用

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

http://www.codeigniter.com/user_guide/general/creating_libraries.html

结帐完整文章

答案 1 :(得分:14)

库很容易编写,但它们有一些限制。构造函数只能将数组作为参数,并假设每个文件只存在一个类。

您可以根据需要包含任何自己的类来使用它们,因为这只是PHP ofc:)

include APPPATH . 'classes/foo.php';
$foo = new Foo;

或者在config.php中设置一个__autoload()函数(最好的位置),你可以访问你的类,而不必包含它们。

答案 2 :(得分:9)

我要说你至少要编写一个包装类,它可以require类,并实例化对象并使它们可访问。然后你可以自动加载这样的库并根据需要使用它。

我建议您至少尝试让它们适合CI方式,因为向前推进这将使您的生活更轻松。我一直处于相同的位置并且一路上学到了这一点。

答案 3 :(得分:0)

require_once(PHYSICAL_BASE_URL . 'system/application/controllers/abc.php');
$report= new abc();

接下来使用 abc 控制器中的函数细节:

$mark=$report->detail($user);

答案 4 :(得分:-4)

如果你刚刚开始使用CodeIgniter,也许你应该检查Kohana(http://kohanaframework.org/)。它在许多方面与CodeIgniter非常相似,但它以正常方式加载类(使用新的ClassName()),因此Netbeans的自动完成功能应该正常工作。