在库中工作与在 codeigniter 中的课堂工作相同
Posted
技术标签:
【中文标题】在库中工作与在 codeigniter 中的课堂工作相同【英文标题】:Working in library same as working in class in codeigniter 【发布时间】:2014-01-13 08:19:29 【问题描述】:我正在使用 codeigniter 开发预订处理应用程序。我正在使用预订控制器,其中我具有搜索(),书籍(),评论(),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);
?>
但是,它说 Fatal error: Call to a member function set_userdata() on a non-object in A:\xampp\htdocs\wiyohk\app\modules\bookings\libraries\bookings_class.php 第 52 行
我不能像 $this 那样使用 -> session -> set_userdata('booking_name',$name); ??
【问题讨论】:
访问ellislab.com/codeigniter/user-guide/general/… 我用我的图书馆信息编辑了问题,但在使用会话库时出现错误。这里发生了什么? 【参考方案1】:您不能直接在库/助手中访问 $this。
你必须为CI创建实例,然后你可以使用如下。
您可以将 $CI 声明为类变量,而不是在构造函数中进行。
public $ci;
在构造函数中,分配实例。
$this->CI= &get_instance();
然后你可以在成员函数中使用如下
$this->ci->session->set_userdata('booking_name',$name);
【讨论】:
我已使用 public $ci = &get_instance(); 将 $CI 声明为类变量但它会引发错误。当我把它放在每个函数中时,它就会起作用。我不能只放置一次吗? 当我将该行放在第一个函数上方时出现的错误,它显示 Parse error: syntax error, unexpected '&' in A:\xampp\htdocs\wiyohk\app\modules\bookings\libraries \bookings_class.php 第 42 行【参考方案2】:只需将$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);
【讨论】:
【参考方案3】:您将 CI 对象分配给 $CI,因此您需要引用 $CI(例如 $CI->session->set....),而不是 $this。
【讨论】:
以上是关于在库中工作与在 codeigniter 中的课堂工作相同的主要内容,如果未能解决你的问题,请参考以下文章
MySql 查询在 PHPmyadmin 中工作,但在 codeigniter 中不工作
Mysql 查询在 Codeigniter 中返回空结果,但在本机 PHP 中工作正常
Codeigniter CLI 在终端中工作,而不是在 Cpanel cron 中