Bir değişken değişken sınıfları çağırmak nasıl?

3 Cevap php

Ben doğru bu soruyu nasıl emin değilim. Ben dinamik olarak (ben bu onlar 'yöntemler' denir demektir düşünüyorum) sınıflarında bulunan işlevleri çağırmak istiyorum.

İşte ben elde etmek ne çalışıyorum açıklamaya yardımcı olur umarım benim kod bir örnektir.

Bu durumda $ sonuç yüklenen tüm farklı modülleri verir. Modülün PHP dosyası sınıfının dahil edilmiş ise, bu daha sonra denetler, o sınıf varsa - doğrudan sınıf aramak için trys.

foreach ($results as $result) {
    $moduleclass_name = 'TestClassName_' . $result->module_name . '::FunctionToCall';
    if (method_exists($moduleclass_name, 'FunctionToCall'))
        $VariableToRetrieve = $modulefunction_name($Parameter1, $Parameter2);
}

Bu bir hata döndürür

"Call to undefined function TestClassName_modulename::FunctionToCall()"

'TestClassName' doğru bildirilmiş olmasına rağmen.

Birisi ben yanlış yapıyorum bana söyleyebilir?

3 Cevap

  1. I think it doesn't work because your syntax may not support "static method calls". I suggest you give a try to Franz's method call_user_func().

  2. Ben eski bir proje üzerinde benzer bir şey yaptım.

It was designed to call a class which implemented an interface, so method names where known. I don't think it's difficult to modify this code in order to make it match with yours.

class CDispatcher {
    public static function GetDispatcher( $module = 'core' ) {
        $class_name = $module . 'Dispatcher';

        try {
            // looks for the file associated with the class
            // if the file is not found an exception is raised
            search_class( $class_name );
        } catch ( exception $e ){
            throw new UnkwownModuleException($module);
        }

        return new $class_name();
    }
}

// Then, you call this class :
$new_instance = CDispatcher::GetDispatcher( $my_module );