【问题标题】:How to add a custom object type in CodeIgniter?如何在 CodeIgniter 中添加自定义对象类型?
【发布时间】:2012-01-11 17:32:11
【问题描述】:

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

目录:

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

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

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

【问题讨论】:

  • 我已经更新了我的答案。我找到了一个很好的例子,说明有人实现了你正在尝试做的事情。

标签: codeigniter


【解决方案1】:

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

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

我希望这会有所帮助。

编辑(2012 年 1 月 12 日):

这是一个扩展 CodeIgniter 以支持自定义资源类型的示例。

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

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

【讨论】:

  • 哇,我希望我能给你的答案投票两次。一个是一个很好的答案,一个是给我看火花。看起来真的很方便。
猜你喜欢
  • 2012-01-19
  • 2019-06-18
  • 2015-11-22
  • 2011-08-10
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多