我想在CodeIgniter中创建一个类的几个实例.我已经将我的类创建为库,但无法弄清楚用于创建多个实例的语法.
从CodeIgniter用户指南:
CI用户指南:Loader类
将库分配给其他对象名称
如果第三个(可选)参数为空,则通常会将库分配给与库名称相同的对象.例如,如果库名为Session,则将其分配给名为$ this-> session的变量.
如果您更喜欢设置自己的类名,可以将其值传递给第三个参数:$ this-> load-> library('session','','my_session');
//现在使用以下方式访问会话类:
$这个 - > my_session
我认为这就是你要找的东西.
我知道这个问题早已过去,但这是我在寻找答案时遇到的问题之一.所以这是我的解决方案......
这是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的唯一一次是调用我编码的静态函数.
很抱歉恢复这个主题,但我想我可能有一些合理的补充.
您可以这样做以添加类的多个实例.我不知道它是否违反了codeigniter标准用法,但似乎比加载一个库(创建$ this->未使用的库名)更为codeigniter-ish然后使用"new"关键字制作2个更多实例.
$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
我在我的代码中使用它来生成不同的菜单.我有一个"菜单"类和每个菜单的不同实例,每个菜单中都有不同的菜单项.