5

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

4

3 回答 3

15

来自 CodeIgniter 用户指南:

CI 用户指南:加载程序类

将库分配给不同的对象名称

如果第三个(可选)参数为空,则通常会将库分配给与库同名的对象。例如,如果库名为 Session,它将被分配给名为 $this->session 的变量。

如果您喜欢设置自己的类名,可以将其值传递给第三个参数:

$this->load->library('session', '',
 'my_session');

现在访问会话类。使用:

$this->my_session

我想这就是你要找的。

于 2009-03-28T20:31:02.403 回答
8

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

这是PHP。将您的类创建为一个库,使用标准 CI 加载器类加载它,但可以像在常规 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的是调用我编写的静态函数。

于 2011-10-19T21:00:48.363 回答
6

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

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

$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

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

于 2012-10-15T06:45:38.933 回答