无需在codeigniter中扩展类/库

时间:2009-10-21 12:25:24

标签: codeigniter extend

我想检查一下我对codeigniter的假设是否正确?

当我们尝试在核心中包含更多功能时,我们通常会扩展一个类,例如MY_Controller extends Controller,MY_Model扩展Model等......

但是,例如,如果我们在结帐库中检索一些结帐信息(例如,product_id),我们可以$this->load->library('product_lib',array('product_id'=>$product_id)),我们可以轻松$ this-> product_lib-> product_name等...来自收银台吧?

$this->load类似于“硬代码”结帐库,以扩展product_lib(类checkout_lib扩展product_lib),以便能够使用product_lib中的任何方法/变量。

请赐教。

2 个答案:

答案 0 :(得分:0)

在CodeIgniter中$this->load就像拥有一个资源管理器(例如resourceManager-> load(“path / to / file”)),它负责加载库,并传递你指定的任何参数等,轻松让您快速使用它。

因此,如果您的product_lib中有一个名为product_name的变量,那么调用$this->product_lib->product_name将会访问该变量。

实际上它只是将库放入一个数组,其中库名作为键,库的实例作为值,因此调用$this->product_lib实际上调用的类似于$loadedLibraries['product_lib']并返回实例

我希望能回答你的问题,我很累,可能会错过了解你的问题。

答案 1 :(得分:0)

我认为你误解了OO范式和CI的运作方式。

$this->load与实例化库/模型的对象相同,或者加载帮助文件。 CI具有某种管理功能,可以查看是否已经上传了帮助程序/库/模型。

另一方面,在定义类时使用extends,告诉PHP该类将继承父类的属性和方法。一个类是它将产生的蓝色对象。

也许你可以先了解OO概念。您可以read this作为开头,并查看此处使用的参考。