我正在开发在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',$名); ??
答案 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);
}