0

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

当我们试图在核心中包含更多功能时,我们通常会扩展一个类,例如 MY_Controller 扩展 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(class checkout_lib extends product_lib),以便能够使用 product_lib 中的任何方法/变量。

请赐教。

4

2 回答 2

0

我认为您误解了 OO 范式和 CI 的工作方式。

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

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

也许您可以先了解 OO 概念。您可以从这里开始阅读,并查看那里使用的参考资料。

于 2010-01-13T10:29:03.720 回答
0

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

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

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

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

于 2009-10-21T13:02:59.250 回答