如何在CodeIgniter中添加自定义对象类型?

时间:2012-01-11 17:32:12

标签: codeigniter

在codeigniter中,我们有mvc框架,模型,视图,库等的标准类。我想将自己的对象子集添加到CodeIgniter,我怎样才能最好地解决这个问题?例如:

目录:

controllers
core
helpers
etc..
widgets //custom object type

在核心内部,我可以有一个My_Widget类,widget文件夹中的所有内容都会扩展。然后,在控制器内部,我可以有类似的东西:

$this->load->widget('Example_Widget');

1 个答案:

答案 0 :(得分:2)

我从未这样做过,所以我无法为您提供完整的解决方案,但我至少可以指出您的方向正确。

查看位于/system/core/Loader.php的Loader类。这是您在使用$this->load时访问的内容。它包含许多加载不同类型(模型,库等)资源的方法。您可以通过复制model()方法,将其重命名为widget()并更新路径来检查/application/widgets目录。您可能需要做更多的事情,例如创建CI_Widget基类,但是您应该能够逐行完成该方法并找出它需要工作的内容。

我希望这会有所帮助。

修改(1/12/2012):

以下是有人扩展CodeIgniter以支持自定义资源类型的示例。

Sparks是CodeIgniter的包管理系统,就像RubyGems for Ruby一样。使用火花很简单。修改CodeIgniter环境以支持sparks后,只需安装spark,然后使用$this->load->spark('...');加载它。修改CodeIgniter环境以支持spark只需要扩展Loader类以支持新的sparks()方法。

修改Loader类的代码可用here。遵循该文件中的模式,您应该能够实现加载自己的自定义资源类型。在我之前的回答中,我说过你可以修改/system/core/Loader.php文件但我建议你按照spark使用的方法并使用/application/core/MY_Loader.php文件。