【问题标题】:CodeIgniter Multiple Sub-Functions or Methods on Same Controller Class?CodeIgniter 同一控制器类上的多个子函数或方法?
【发布时间】:2018-09-21 22:21:29
【问题描述】:

我是 OOP 新手。

我希望在渲染函数下拥有这些不同的方法(页面、菜单、小部件)。他们都在MY_Controller.php 班级。你能告诉我一个如何实现这个的例子吗?就像内置的 $this->parser->parse(); 我想创建类似的东西......

public function render('something')
{
    // page() related stuff;
    // menu() related stuff;
    // widget() related stuff;
}

$this->render->page('something');

$this->render->menu('something');

$this->render->widget('something');

这甚至可能吗?我知道如何创建$this->render_page();$this->render_widget(); 等等,但我认为以前的方法更可行,对眼睛有好处,更多可以将它们组合在一起以便于维护。我需要这样做还是只是创建不同的功能?

【问题讨论】:

  • 我不明白你的“问题”,看来你已经弄明白了。将函数移入模型并移出 ci 控制器并根据需要填充它们。
  • 嗨@Alex,我的意思是,我希望能够从 $this->render->page(); 调用该函数;而不是 $this->render_page();因为我还将创建另一个称为菜单和小部件的“子方法”。我该怎么做?
  • Oic,你觉得用model更好吗?因为我认为通过渲染页面逻辑必须在控制器中,因为模型仅用于数据库的东西,我没有从数据库中获取信息,而只是从控制器返回构建/渲染我需要的东西并将它们发送到视图......

标签: php function codeigniter class controller


【解决方案1】:

“你认为使用模型更好吗?”

传统上,模型主要与数据库有关,但是(在我看来)当您采用 OOP 方法时,您可以选择一个库或一个模型(在 CI 中)。

库更倾向于与您的应用程序松散耦合,并从 CI 应用程序拖放到 CI 应用程序。

当您处理与当前应用程序紧密相关的逻辑时,有时一个模型可能是个好主意:例如带有特定变量的页眉/页脚,这些变量不太可能用于其他目的(例如其他应用程序)。例如,我有一个模型,用于管理有关用户个人资料图片从上传到删除的所有内容 - 控制器方法可以在保持内容干燥的同时使用它 - 它太短而不能成为一个库并且太特定于应用程序而无法用作一个,我喜欢我的控制器只是输入/输出,所以只是验证和响应,其余的由模型或库处理。

所以一般来说,如果我是你,我会将函数移动到库或模型中。我想你会发现大多数 CI 模板系统都是基于库的。在任何情况下,除非方法位于库/模型中,否则您无法访问 $this->render->somemethod()


你想要的我认为已经做了很多,一个简单的谷歌搜索“Codeigniter 模板库”,你会得到大量的 github 库。

喜欢这个:https://github.com/jenssegers/codeigniter-template-library(甚至还有小部件)。

【讨论】:

  • 非常感谢您的回答。您说的很清楚,我正在考虑做一些更简化的事情,例如内置 CI 模板解析器,但是,我没有意识到它实际上是一个库而不是控制器。现在,这是有道理的,我的问题很清楚。我正在尝试熟悉 MVC + OOP 方法,以及如果仅在纯 PHP 上完成,如何实现如此简单的逻辑(因为我们必须遵循框架指南/最佳实践)......我接受这个作为答案。
  • 很高兴我能帮上忙 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多