【问题标题】:Using a custom library inside of a custom library in codeigniter?在codeigniter的自定义库中使用自定义库?
【发布时间】:2012-09-20 18:37:02
【问题描述】:

我遇到的问题是我试图在我在 codeigniter 中创建的另一个自定义库中使用自定义库。它们都在库文件夹中,CodeIgniter 告诉我必须先加载我所做的 CI 实例...

class MyClass {

public function __construct()
{
    $CI =& get_instance();
    $CI->load->library("OtherClass");
}

现在在这个类的一个函数中,我正在尝试使用我的其他库..

public function my_function()
{
      $CI->otherclass->function_inside_this_class();
}

我得到的错误是

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: CI
Filename: libraries/MyClass.php
Line Number: 20

在声明 codeigniter 实例本身方面我有什么遗漏吗?

谢谢!

【问题讨论】:

    标签: php codeigniter libraries


    【解决方案1】:

    您的 CI 变量范围目前仅限于构造函数。您可以创建一个具有类范围的类变量,并且可以在该类的所有函数中通过$this->variable 访问。

    class MyClass {
    
    private $_CI; // make a private class variable here. 
    
    public function __construct()
    {
        $this->_CI =& get_instance();
        $this->_CI->load->library("OtherClass");
    }
    public function my_function()
    {
        $this->_CI->otherclass->function_inside_this_class();
    }
    

    【讨论】:

    • 是否需要下划线?如果我将变量公开怎么办?这会实施安全漏洞吗?
    • 下划线不是必须的,不好意思忘记说了。这只是我用于私有变量的约定。最好将它作为私有变量,因为在这个类之外访问它是没有意义的。
    • @user1296953 不,下划线不是必需的,如果它是私有的,不应该有任何安全问题(如果需要,他们可以调用get_instance),但想法是只有类需要变量,它不供公众使用。
    【解决方案2】:

    我认为你不应该使用 CI。包括second_library.php 并在first_library.php 中创建一个新类。还是不可能?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多