Php CodeIgniter在同一控制器类上有多个子函数或方法?

Php CodeIgniter在同一控制器类上有多个子函数或方法?,php,function,codeigniter,class,controller,Php,Function,Codeigniter,Class,Controller,我是新手 我希望在呈现函数下有这些不同的方法(页面、菜单、小部件)。它们都在MY_Controller.php类中。你能给我举个例子说明如何实现这一点吗?就像内置的$this->parser->parse()我想创建类似的东西 public function render('something') { // page() related stuff; // menu() related stuff; // widget() related stuff; } $this-

我是新手

我希望在呈现函数下有这些不同的方法(页面、菜单、小部件)。它们都在
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()
等等,但我认为前面的方法更可行,对眼睛也有好处,更多的方法可以将它们组合在一起,以便于维护。我需要这样做还是仅仅创建不同的功能?

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

传统上,模型主要与数据库有关,然而(在我看来),当您使用OOP方法时,您可以选择库或模型(在CI中)

库更应该与应用程序松散耦合,并从CI应用程序拖放到CI应用程序

有时,当您处理与当前应用程序紧密关联的逻辑时,一个模型可能是一个好主意:例如带有特定变量的页眉/页脚,这些变量不太可能用于其他用途(例如,其他应用程序)。例如我有一个模型,用于管理从上传到删除的用户配置文件图片的所有内容-控制器方法可以在保持内容干燥的同时利用该模型-该模型太短,无法作为库使用,并且太特定于应用程序,无法作为一个库使用,我希望我的控制器只能作为输入/输出,因此只需验证和响应其余部分由模型或库处理的

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


我认为你想要的东西已经做了很多,在谷歌上搜索“Codeigniter模板库”,你会得到很多github库


就像这个:(甚至有小部件)。

我不明白你的“问题”,好像你已经解决了。将函数移入模型并移出ci控制器,并根据需要填充它们。嗨@Alex我的意思是,我希望能够从$this->render->page()调用函数;而不是$this->render_page();因为我还将创建另一个“子方法”,称为菜单和小部件。我该怎么做?Oic,那么你认为使用模型更好吗?因为我认为通过渲染页面,逻辑必须在控制器中,因为模型只用于数据库内容,我不是从数据库中获取信息,而是从控制器返回并将其发送到视图中构建/渲染所需的内容…非常感谢您的回答。你说得很清楚,我正在考虑做一些更简单的事情,比如内置的CI模板解析器,但是,我没有意识到它实际上是一个库而不是一个控制器。现在,这是有道理的,我的问题很清楚。我正在尝试熟悉MVC+OOP方法,以及如果仅在纯PHP上实现,如何实现如此简单的逻辑(因为我们必须遵循框架指南/最佳实践)。。。我接受这个答案。很高兴我能帮上忙:)