Я работаю над php web api, который был передан мне с большим количеством кода, который необходимо реорганизовать. Те, кто написал код, хотели включить класс статической конфигурации в ресурс API, а затем получить экземпляр этого класса примерно так:
<?php
$obj = "User";
$confObjectSuffix = "_conf";
$confObject = $obj.$confObjectSuffix;
if ($confObject::inst()->checkMethod($method)) {
.....
Это выдает ошибку «Ошибка разбора: синтаксическая ошибка, неожиданный T_PAAMAYIM_NEKUDOTAYIM in .....», поскольку $ confObject является строкой, а не объектом.
Я написал тестовый код:
<code><?php
$class = "User_conf";
echo "<pre>";
print_r($$class::Inst());
echo "
";
class User_conf {
приватная статическая $ INSTANCE = null;
публичная статическая функция Inst () {
if (User_conf :: $ INSTANCE === null) {
User_conf :: $ INSTANCE = new User_conf ();
}
return User_conf :: $ INSTANCE;
}
}
Но нельзя заставить его работать и с $$, есть ли другой способ обойти это? Я не хочу переписывать больше, чем нужно.