我可以使变量全局可见,而不必在每个PHP类的构造函数中声明它是全局的吗?

Dav*_*unt 6 php oop variables global class

我有一个数据库类,它的实例在主宣布index.php

$db = new Database();
Run Code Online (Sandbox Code Playgroud)

有没有办法让$db变量在所有其他类中被全局识别而不必声明

global $db;
Run Code Online (Sandbox Code Playgroud)

在每个类的构造函数中?

Tyl*_*ter 16

不.您必须在每个类的构造函数中声明Global $ db.

或者您可以使用全局数组:$ _GLOBALS ['vars'];

解决这个问题的唯一方法是使用静态类来包装它,称为Singleton方法(请参阅此处获取解释).但这是非常糟糕的做法.

  class myClass
   {
    static $class = false;
    static function get_connection()
    {
        if(self::$class == false)
        {
            self::$class = new myClass;
        }
        else
        {
            return self::$class;
        }
    }
    // Then create regular class functions.
   }
Run Code Online (Sandbox Code Playgroud)

创建单例方法是为了确保只有一个类的实例.但是,因为人们将它用作快捷方式的一种方式,所以它被称为懒惰/糟糕的编程.

StackOverflow知识
如何避免使用PHP全局对象
在不使用全局变量的情况下在PHP中的函数之间共享变量
使全局变量可访问类全局或单例内的每个函数以
进行数据库连接