首页 > 数据库 > mysql教程 > 如何在 PHP 中访问类方法内的全局变量?

如何在 PHP 中访问类方法内的全局变量?

Susan Sarandon
发布: 2025-01-18 00:30:09
原创
212 人浏览过

How Can I Access Global Variables Inside Class Methods in PHP?

访问 PHP 类方法内的外部变量

尝试从类方法内直接访问全局变量 ($db)(例如 get_records 类中的 pagi)会导致错误。这是由于范围可变造成的;全局变量在类方法中不会自动可用。 解决方案涉及将变量显式传递到类中。

解决方案:依赖注入

最好的方法是依赖注入。这涉及将必要的对象(在本例中为数据库对象)作为参数传递给类构造函数或直接传递给方法。这使得类独立于全局变量,提高了代码的可维护性和可测试性。

方法一:通过构造函数注入

<code class="language-php">class Paginator
{
    protected $db;

    public function __construct(DB_MySQL $db)
    {
        $this->db = $db;
    }

    public function get_records($q)
    {
        $x = $this->db->query($q);
        return $this->db->fetch($x);
    }
}

$pagination = new Paginator($db); // Pass the DB object
$records = $pagination->get_records("SELECT * FROM `table`");</code>
登录后复制

方法二:直接注入方法

或者,您可以将数据库对象直接传递给方法:

<code class="language-php">class Paginator
{
    public function get_records($q, DB_MySQL $db)
    {
        $x = $db->query($q);
        return $db->fetch($x);
    }
}

$pagination = new Paginator();
$records = $pagination->get_records("SELECT * FROM `table`", $db); // Pass DB object to method</code>
登录后复制

推荐:构造函数注入

虽然这两种方法都有效,但构造函数注入(方法 1)通常是首选。它促进松耦合,使代码更加模块化、可测试且更易于维护。 直接方法注入(方法 2)可能会降低代码的可读性并且更难以重构。 尽可能避免依赖全局变量。

以上是如何在 PHP 中访问类方法内的全局变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板