PHP-将类视为对象

PHP-将类视为对象,php,oop,Php,Oop,我需要给变量分配一个类(不是对象)。我知道这在其他编程语言中非常简单,比如Java,但我找不到在PHP中实现这一点的方法 这是我试图做的一个片段: class Y{ const MESSAGE = "HELLO"; } class X{ public $foo = Y; // <-- I need a reference to Class Y } $xInstance = new X(); echo ($xInstance->foo)::MESSAGE;

我需要给变量分配一个类(不是对象)。我知道这在其他编程语言中非常简单,比如Java,但我找不到在PHP中实现这一点的方法

这是我试图做的一个片段:

class Y{

    const MESSAGE = "HELLO";

}

class X{

    public $foo = Y; // <-- I need a reference to Class Y

}

$xInstance = new X();
echo ($xInstance->foo)::MESSAGE; // Of course, this should print HELLO
Y类{
const MESSAGE=“你好”;
}
X类{
public$foo=Y;//foo::MESSAGE;//当然,这应该打印HELLO

在php中,您不能在变量中存储对类的引用。因此,您需要存储一个带有类名和使用函数的字符串


在php中,不能将对类的引用存储在变量中,所以要存储一个带有类名和use function的字符串


您可以使用反射来查找它(请参阅),也可以使用如下方法:

<?php

class Y
{
    const MESSAGE = "HELLO";
}

class X
{
    function returnMessage()
    {
        return constant("Y::MESSAGE");
    }
}

$x = new X();
echo $x->returnMessage() . PHP_EOL;

您可以使用反射来查找它(请参阅),也可以使用如下方法:

<?php

class Y
{
    const MESSAGE = "HELLO";
}

class X
{
    function returnMessage()
    {
        return constant("Y::MESSAGE");
    }
}

$x = new X();
echo $x->returnMessage() . PHP_EOL;

我发现可以像处理任何常规字符串一样处理对类的引用

注意:在下面的代码片段中,我对问题中显示的代码做了一些修改,只是为了让它更易于阅读

class Y{
    const MESSAGE="HELLO";

    public static function getMessage(){
        return "WORLD";
    }

}
$var = "Y";
echo $var::MESSAGE;
echo $var::getMessage();

这提供了一种统一的机制来访问常量和/或静态字段或方法。

我发现,可以像处理任何常规字符串一样处理对类的引用。以下似乎是最简单的方法

注意:在下面的代码片段中,我对问题中显示的代码做了一些修改,只是为了让它更易于阅读

class Y{
    const MESSAGE="HELLO";

    public static function getMessage(){
        return "WORLD";
    }

}
$var = "Y";
echo $var::MESSAGE;
echo $var::getMessage();

这提供了一个统一的机制来访问常量和/或静态字段或方法。

为什么需要这样做?也许有一种更惯用的方法来实现您想要的,我正在编写一个小库,我需要访问常量,并在给定的类和运行时调用静态方法。上面的示例是我最简单的方法解释我的问题。你为什么需要这个?也许有一种更惯用的方法来实现你想要的,我正在编写一个小库,我需要访问常量并调用给定类和运行时的静态方法。上面的例子是我解释我的问题的最简单的方法。