PHP:通过字符串值获取静态类的实例

4

我正在开发一个PHP Web API,但是代码需要进行大量重构。原本编写代码的人想要将静态配置类包含到API资源中,并像这样获取该类的实例:

<?php
$obj = "User";
$confObjectSuffix = "_conf";
$confObject = $obj.$confObjectSuffix;
if ($confObject::inst()->checkMethod($method)) {
.....

这会出现错误“解析错误:在......中意外的T_PAAMAYIM_NEKUDOTAYIM”,因为$confObject是一个字符串而不是一个对象。

我写了一些测试代码:

<?php

$class = "User_conf";
echo "<pre>";
print_r($$class::Inst());
echo "</pre>";

class User_conf {
    private static $INSTANCE = null;

    public static function Inst() {
        if(User_conf::$INSTANCE === null) {
            User_conf::$INSTANCE = new User_conf();
        }

        return User_conf::$INSTANCE;
    }
}

但是我也无法使用$$,有没有其他的解决方法?我不想重写更多的内容。

1个回答

6
您可以使用call_user_func来捕获实例,然后根据需要进行处理:
$instance = call_user_func(array($confObject, 'inst'));

if($instance->checkMethod($method)) {
    ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接