PHP: dize değeri statik sınıfı örneğini alın

1 Cevap php

Ben refactored gereken kodu bir sürü ile bana teslim edildi php web api üzerinde çalışıyorum. Kod yazdı olanlar bir api kaynak statik bir yapılandırma sınıfı içerir ve sonra bu gibi o sınıf bir şeyin bir örneğini almak istedim:

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

": Sözdizimi hatası, beklenmedik T_PAAMAYIM_NEKUDOTAYIM ..... Ayrıştırma hatası" $ confObject bir dize ve bir nesne olduğundan bu hata verir.

Bazı deneme kodunda yazdı:

<?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;
    }
}

Ama ya $ $ ile çalışmak için alınamıyor, bu çevrede başka bir yolu var mı? Ben gereğinden fazla yeniden yazmak istemiyorum.

1 Cevap

Bunu gerektiği gibi işlemesini ardından, call_user_func örneğini yakalamak için kullanabilirsiniz:

$instance = call_user_func(array($confObject, 'inst'));

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