如何在CodeIgniter中创建库类的多个实例?

时间:2009-03-28 18:24:44

标签: class codeigniter instance

我想在CodeIgniter中创建一个类的几个实例。我已经将我的类创建为库,但无法弄清楚用于创建多个实例的语法。

3 个答案:

答案 0 :(得分:15)

来自CodeIgniter用户指南:

CI Users Guide: Loader Class

  

将库分配给其他对象名称

     

如果第三个(可选)参数是   空白,图书馆通常会   分配给具有相同的对象   命名为库。例如,如果   该库名为Session,它会   被赋值给一个名为的变量   $这 - >会话

     

如果您想设置自己的课程   您可以将其值传递给的名称   第三个参数:   $ this-> load-> library('session','',   'my_session');

     

//现在访问会话类   使用:

     

$这 - > my_session

我认为这就是你要找的东西。

答案 1 :(得分:8)

我知道这个问题早已过去,但这是我在寻找答案时遇到的问题之一。所以这是我的解决方案......

这是PHP。将您的类创建为库,使用标准CI Loader类加载它,但像在常规PHP脚本中一样使用它。

建立你的班级:

class My_class {

    var $number;

    public function __construct($given_number){
        $number = $given_number;
    }

    public function set_new_num($given_number){
        $number = $given_number;
    }
}

加载它:

// This will load the code so PHP can create an instance of the class
$this->load->library('My_class');

然后在需要的地方实例化并使用对象:

$num = new My_class(24);

echo $num->number;
// OUTPUT: 24

$num->set_new_num(12);

echo $num->number;
// OUTPUT: 12

我唯一一次使用$ this-> my_class是为了调用我编码的静态函数。

答案 2 :(得分:5)

很抱歉恢复这个话题,但我想我可能有一些合理的补充。

您可以这样做以添加类的多个实例。我不知道它是否违反了codeigniter标准用法,但似乎比加载一个库(创建$ this->未使用的library_name)更为codeigniter-ish然后使用“new”关键字生成2个MORE实例。 / p>

$this->load->library( 'my_library', '', 'instance1' );
$this->load->library( 'my_library', '', 'instance2' );

$this->instance1->my_class_variable = 1; 
$this->instance2->my_class_variable = 2; 

echo $this->instance1->my_class_variable; // outputs 1
echo $this->instance2->my_class_variable; // outputs 2

我在我的代码中使用它来生成不同的菜单。我有一个“菜单”类和每个菜单的不同实例,每个菜单中都有不同的菜单项。

相关问题