【问题标题】:make a variable inside a function accessible to other functions?使其他函数可以访问函数内的变量?
【发布时间】:2010-12-18 00:13:00
【问题描述】:

在函数内部,我有一个 $connection var,它显然存储了我与 mysql 的连接, 如何从其他函数中调用该 var 以节省我必须将 $connection var 粘贴到需要此 var 的每个函数中?

我尝试了全局无济于事。

非常感谢

【问题讨论】:

    标签: php function variables scope


    【解决方案1】:

    您可以使用旧的 global 关键字。

    function a() {
       global $connection;
    }
    

    或者你可以把它扔进$GLOBALS(这将帮助你把它从定义它的函数中取出)。

    他们都不太漂亮。

    或者您可以传入$connection 作为参数。

    处理数据库连接的最常见方法是让其创建由单例模式处理,或者拥有一个带有 OO 的基类,该基类具有可用的 $this->db,您的所有其他类都可以从该基类继承。

    【讨论】:

    • +1 虽然你提到单例模式很有趣,因为它与全局变量非常相似...... ;)
    【解决方案2】:

    将连接作为参数传递给需要它的函数。它使您的代码保持清洁和可重用。

    【讨论】:

      【解决方案3】:

      另一种解决方案是使用类并将连接设为类变量。每次需要时您只需使用$this->connection,但如果您已经在大量文件中编写了大量代码,这并不是真正的解决方案。

      【讨论】:

        【解决方案4】:

        在函数外部声明变量,然后使用 global 关键字使其在您需要的每个函数内部可访问。

        $globalName = "Zoe";
        
        function sayHello() {
          $localName = "Harry";
          echo "Hello, $localName!";
        
          global $globalName;
          echo "Hello, $globalName!";
        }
        
        sayHello();
        

        盗自http://www.elated.com/articles/php-variable-scope-all-you-need-to-know/

        【讨论】:

          猜你喜欢
          • 2017-06-09
          • 2022-06-14
          • 2018-03-07
          • 2017-12-02
          • 2013-09-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多