codeigniter 类中的 api
Posted
技术标签:
【中文标题】codeigniter 类中的 api【英文标题】:api in a class in codeigniter 【发布时间】:2012-03-13 16:07:01 【问题描述】:class Api extends CI_Controller
public function index()
show_error("You are not authorized to access this page", 401);
我有一个 api 类 class Api extends CI_Controller
和另一个class myproject extends
,现在如果想在 myproject 类中使用 api 类的功能。我能怎么做 。我必须创建一个 api 类的对象还是只用 parent::api 类扩展 myproject 类。请帮助我,因为我不擅长 oops。
details - 我创建了一个类“class myproject extends ci_controller”,它对用户注册和登录应用程序具有不同的功能。使用单个控制器一切正常。但是现在想使用一个api文件。它具有登录功能。我如何从“class myproject”调用 api 文件中的这些函数
【问题讨论】:
不清楚,但我怀疑 API 类作为库会比控制器更好地工作 【参考方案1】:您应该只需要扩展 API 类,如下所示
class Myproject extends Api ...
但还有一些其他问题,例如include_once("Api.php")
,例如在 Myproject.php 文件中,以便子类可以“看到”超类声明。 codeigniter 论坛上的 thread 讨论了这些问题(对于 google webcache 版本很抱歉,但该论坛目前正在停机维护)。
【讨论】:
【参考方案2】:您可以创建一个助手,例如表格一并使用您的方法。 然后你就可以加载它了:
$this->load->helper('api');
【讨论】:
【参考方案3】:首先,你不能在控制器中调用控制器的函数,除非你继承它。
最好将 API 类创建为库,而不是控制器。
如果您有一些限制只能将其用作控制器,则可以通过 curl 调用使用这些 API。
但最好的方法是将它们放在帮助程序中,如果您仅从自己的服务器访问它们。
【讨论】:
【参考方案4】:首先,这看起来更像是一个软件设计问题,而不是真正的代码问题。
CodeIgniter 是基于 MVC 概念的,Controller 只是用来搭建页面的。 您可能应该为所有 API 功能创建一个库,并让控制器调用该库并将数据转换为 JSON 或您希望将其转换为的任何内容。
对于我自己,我应用了一个简单的规则: 永远不要编写/调用不生成任何形式输出的 Controller 方法。
我建议你坚持 CodeIgniter 的编码方式,而不是试图避免它们。
【讨论】:
以上是关于codeigniter 类中的 api的主要内容,如果未能解决你的问题,请参考以下文章