【问题标题】:Call codeigniter helper function in core PHP在核心 PHP 中调用 codeigniter 辅助函数
【发布时间】:2013-04-08 17:04:22
【问题描述】:

我创建了一个辅助类authentication_helper,其中我创建了一个检查会话的函数varify_session()。我正在使用 jquery,其中我使用 setTimeout 通过 ajax 调用调用 somee 函数,但是这个函数的调用转到核心 PHP 代码类,现在当我在核心 php 中调用 varify_session() 时它不起作用但是当我调用时在 codeigniter 类中它可以工作,所以我应该怎么做才能在核心 php 代码中调用它,以便它还使用 1 个 setTimeout 函数检查会话。 我的帮助文件位于

的方向
/www
  /sample
    /application
      /helpers
         /authentication_helper
    /controller
      /core_php.php
      /other php clases 

authentication_helper里面的代码是这样的

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

function varify_session(){
    $CI = &get_instance();
    $user_session_id = $CI->session->userdata('logged_in');

    if($user_session_id ==  '') {
        redirect('login');
    }
}
?>

更新

【问题讨论】:

  • 你需要做 CI 在后台所做的事情,包括帮助文件
  • 我已将其包含在自动加载文件中
  • 但是自动加载是针对 CI 的...现在,我认为您必须解释一下“核心 php”是什么意思,因为据我了解,您指的是一个 php 文件 outside 框架
  • 核心 php 文件在我的控制器文件夹中
  • 你的意思是我在核心课程中也包括那个助手?

标签: php codeigniter


【解决方案1】:

CodeIgniter 中的帮助文件只是其中嵌入了函数的 php 文件。他们没有什么特别的“CodeIgniter”。

您只需在“核心 PHP 代码类”中包含该特定文件:

// inside your core php class
include('path/to/my/ci/application/helper/authentication_helper.php');

更新

好的,在阅读了一些 cmets 并更仔细地查看了您的问题后,我注意到您的结构没有正确设置,无法按照设计使用的方式使用 CodeIgniter。

我的第一行问题是:core_php.php 文件实际上是做什么的?您是想将其用作控制器吗?还是仅将其用作对象?”

  • 如果您尝试将其用作控制器,请不要这样做。通过扩展CI_Controller 将其变成actual CodeIgniter Controller Class。然后,您将像任何其他帮助程序一样加载身份验证帮助程序:$this-&gt;load-&gt;helper('authentication');

  • 如果您只是将其用作对象(我假设是这种情况),则将其放入您的 libraries 文件夹并从 CodeIgniter 加载的文件中调用它(意味着您有可用的 CI 实例)。将该文件放入libraries 文件夹后,您可以使用$this-&gt;load-&gt;library('core_php'); 加载它——然后您可以使用$this-&gt;core_php-&gt;method_name(); 从该文件中调用一个方法。在需要它的 core_php 方法中,您将加载身份验证助手:$this-&gt;load-&gt;helper('authentication');

以这种方式设置文件将利用 CodeIgniter 加载机制并让您访问 CI 实例 - 当您收到 Trying to get property of non-object 错误(您试图获取 CI 实例来自 CI 引导程序之外)。

如果此设置没有帮助,那么我们需要查看相关文件的实际内容。

【讨论】:

  • swatkins 感谢您回复我,您能告诉我如何设置通用路径,以便如果我将一台服务器更改为另一台服务器,因此不需要更改,我正在处理当前的本地主机和我的根文件夹名称是sample 所以它会像这样http://localhost/sample/application/helper/authentication_helper.php 或任何其他格式。谢谢
  • 好吧,不知道你的服务器,不。这一切都取决于您的核心 PHP 类在哪里,以及它与您需要包含的帮助文件的关系。
  • 我已经编辑了我的问题,请查看它,然后告诉我路径
  • 在您的设置中,您将在您的core_php.php 文件中包含以下内容:include('../application/helpers/authentication_helper.php');
  • 它给我的错误是failed to open stream: No such file or directory
猜你喜欢
  • 2012-11-21
  • 1970-01-01
  • 2014-01-23
  • 2015-11-09
  • 1970-01-01
  • 2010-11-24
  • 2012-01-07
  • 2015-05-08
  • 2015-06-29
相关资源
最近更新 更多