Php 将在类内部创建的变量声明为全局变量

Php 将在类内部创建的变量声明为全局变量,php,Php,如何使在类函数中创建的变量在该类函数之外可用 例如,我的主类的构造函数创建了日志类的一个实例。我希望这个$log变量在我假设的其他类中可用(使用global关键字) 这可能吗?您可以使用static class Main { static private $log; public function __construct() { self::$log = new Log(); } static public fu

如何使在类函数中创建的变量在该类函数之外可用

例如,我的主类的构造函数创建了日志类的一个实例。我希望这个$log变量在我假设的其他类中可用(使用global关键字)

这可能吗?

您可以使用static

class Main
    {
    static private $log;

    public function __construct()
        {
        self::$log = new Log();
        }

    static public function getLog()
        {
        return self::$log;
        }
    }
现在,您可以使用

Main::getLog();

使用全局变量会破坏OOP的目的。OOP旨在减轻依赖性,并为模块化使用提供代码包容


您只是在错误地对待您的应用程序设计,而不是设计日志实例的易访问性。就是,;实例化日志类,并将实例存储在其他依赖它的类可以访问(通过设计)的地方。一种“注册表”。

在创建注册表的函数中使用
global
关键字,或
$GLOBALS['log']
,但您应该重新考虑这一点。一个类的构造函数真的应该实例化另一个全局使用的类吗?可能您应该在另一个类之外实例化日志类。回答得好。。你关于它违背OOP目的的观点是非常正确的。我会重新考虑我希望它如何工作。谢谢。。那可能就是我要走的路!