Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > call_user_func_array


Автор: Elfet 11.4.2006, 14:19
Код

            $gets_html = ( $modules[2][$temp_id] == "" ) ?
                         call_user_func_array(array('module', 'get'),explode(",",$modules[2][$temp_id]))
                         :
                         call_user_func(array('module', 'get'));

Не хочет работать call_user_func_array для метода класса smile array('module', 'get') :
Цитата

call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'module::get' was given

Добавлено @ 14:22
Цитата

call_user_func(get) [function.call-user-func]: First argument is expected to be a valid callback

Вообще не хочет ничего работать smile
Добавлено @ 14:25
Если вызываю вот так: $module->get() - работает

Автор: Elfet 11.4.2006, 14:36
Не хочет и всё smile
Код

            $module = new $file_class();
            $gets_html =  call_user_func(array('module', 'get'));

Добавлено @ 14:39
Доперло :/ $gets_html = call_user_func(array($file_class, 'get')); - но так не хочет работать как из класса :/

Автор: IvanB 11.4.2006, 18:35
Цитата
new $file_class()

Это что за чудо? smile

Вот так всё работает: smile
Код

class file_class
{
    private $text;
    public function file_class()
    {
        $this->text="text2";
    }
    public function get()
    {
        echo $this->text;
    }
    public function getFunc($funcName)
    {
        call_user_func(array($this, $funcName));
    }
}

$obj=new file_class();
call_user_func(array($obj, "get"));
$obj->getFunc("get");

Или это малость не то, что нужно? )

Автор: Elfet 11.4.2006, 21:06
Ок! smile Спасибо! smile Уже разобрался smile
Код

new $file_class()

Создаю пользовательский класс smile

Код

        preg_match_all("#<!--WEL\.([\w\d_]+\(?([\w\d,]+)?\)?)-->#",$templ,$modules);

        $modules[1] = array_unique($modules[1]);

        foreach ($modules[1] as $temp_id=>$temp_name)
        {
          $name = explode("(",$temp_name);
          $file_lower = strtolower ( $name[0] );
          $file = ROOT_PATH."sources/welcome/".$file_lower.".php";
          $file_class = $file_lower;
          if( file_exists( $file ) )
          {
            require_once( $file );
            $module = new $file_class();
            $module->ipsclass =& $this->ipsclass;
            $gets_html = $module->get( explode(",",$modules[2][$temp_id]) );
            $templ = str_replace("<!--WEL.".$temp_name."-->",$gets_html,$templ);
          }
        }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)