我想在CodeIgniter中创建一个类的几个实例。我已经将我的类创建为库,但无法弄清楚用于创建多个实例的语法。
答案 0 :(得分:15)
来自CodeIgniter用户指南:
将库分配给其他对象名称
如果第三个(可选)参数是 空白,图书馆通常会 分配给具有相同的对象 命名为库。例如,如果 该库名为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
我在我的代码中使用它来生成不同的菜单。我有一个“菜单”类和每个菜单的不同实例,每个菜单中都有不同的菜单项。