在库中工作与在codeigniter中的类中工作相同

时间:2013-12-25 10:47:13

标签: php codeigniter

我正在开发在codeigniter中处理app的预订。我正在使用预订控制器,其中我有search(),book(),review(),mailme()等功能。我在那里写每个预订的东西,因为单个控制器文件中的代码太多,事情变得混乱

我想在另一个文件中处理小东西。我怎样才能做到这一点?我已经创建了库,但是我遇到了关于加载助手,库等的问题。如何创建另一个文件,以便每个权限和加载内容与我的预订控制器文件完全相同?

这是我的图书馆文件

<?php
/**
 * CodeIgniter
 *
 * An open source application development framework for PHP 4.3.2 or newer
 *
 * @package     CodeIgniter
 * @author      ExpressionEngine Dev Team
 * @copyright   Copyright (c) 2008 - 2009, EllisLab, Inc.
 * @license     http://codeigniter.com/user_guide/license.html
 * @link        http://codeigniter.com
 * @since       Version 1.0
 * @filesource
 */

// ------------------------------------------------------------------------

/**
 * CodeIgniter Application Page Controller Class
 *
 * This class object is the super class that every library in
 * CodeIgniter will be assigned to.
 *
 * @package     CodeIgniter
 * @subpackage          Libraries
 * @category            Libraries
 * @author      Avash Poudel <atomambition@gmail.com>
 * @link        http://codeigniter.com/user_guide/general/controllers.html
 */
class Bookings_class {

    /**
     * Constructor
     *
     * Calls the initialize() function
     */

    public function __construct()
    {
        // Do something with $params
        $CI =& get_instance();

    $CI->load->helper('url');
    $CI->load->library('session');

    }



    function set_name($name)
    {
        $this -> session -> set_userdata('booking_name',$name);
    }

    function set_email($email)
    {
        $this -> session -> set_userdata('booking_email',$email);
    }
    function set_phone($phone)
    {
        $this -> session -> set_userdata('booking_phone',$phone);
    }









    }
?>

但是,它表示致命错误:在第52行的A:\ xampp \ htdocs \ wiyohk \ app \ modules \ bookings \ libraries \ bookings_class.php中的非对象上调用成员函数set_userdata()

我不能像$ this一样使用 - &gt;会话 - &gt; set_userdata( 'booking_name',$名); ??

3 个答案:

答案 0 :(得分:1)

您无法直接在库/助手中访问$ this。

您必须为CI创建实例,然后您可以使用如下。

您可以将$ CI声明为类变量,而不是在构造函数中执行。

public $ci;

在构造函数中,分配实例。

$this->CI= &get_instance();

然后你可以在成员函数中使用如下

$this->ci->session->set_userdata('booking_name',$name);

答案 1 :(得分:0)

您将CI对象分配给$ CI,因此您需要引用$ CI(例如$ CI-&gt; session-&gt; set ....),而不是$ this。

答案 2 :(得分:0)

只需将$this替换为$CI

即可
function set_name($name)
{
    $CI -> session -> set_userdata('booking_name',$name);
}

function set_email($email)
{
    $CI -> session -> set_userdata('booking_email',$email);
}
function set_phone($phone)
{
    $CI -> session -> set_userdata('booking_phone',$phone);
}