在核心PHP中调用codeigniter辅助函数

时间:2013-04-08 17:04:23

标签: php codeigniter

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

的directior中
/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');
    }
}
?>

更新

1 个答案:

答案 0 :(得分:0)

CodeIgniter中的Helper文件只是嵌入了函数的php文件。关于它们没有特别的“CodeIgniter”。

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

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

<强>更新

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

我的第一个问题是:core_php.php文件实际上做了什么?您是否尝试将其用作控制器?或者您只是将其用作对象?”

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

  • 如果您只是将它用作对象(我认为是这种情况),则将其放入libraries文件夹并从CodeIgniter中调用它加载文件(意味着您可以使用CI实例)。将该文件放入libraries文件夹后,您可以使用$this->load->library('core_php');加载它 - 然后您可以使用以下代码调用该文件中的方法:$this->core_php->method_name();。在需要它的core_php方法中,您可以使用以下代码加载身份验证帮助程序:$this->load->helper('authentication');

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

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