【问题标题】:No need to extend class/library in codeigniter无需在 codeigniter 中扩展类/库
【发布时间】:2009-10-21 12:25:23
【问题描述】:

我想检查一下我对 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 中的任何方法/变量。

请赐教。

【问题讨论】:

    标签: codeigniter extend


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      也许您可以先了解 OO 概念。您可以read this 作为开始,并查看那里使用的参考。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-11
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        • 2011-12-10
        • 2012-01-10
        • 2016-06-18
        • 2023-03-12
        相关资源
        最近更新 更多