在codeigniter中,我们有mvc框架,模型,视图,库等的标准类。我想将自己的对象子集添加到CodeIgniter,我怎样才能最好地解决这个问题?例如:
目录:
controllers
core
helpers
etc..
widgets //custom object type
在核心内部,我可以有一个My_Widget
类,widget文件夹中的所有内容都会扩展。然后,在控制器内部,我可以有类似的东西:
$this->load->widget('Example_Widget');
答案 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
文件。