функция и ее параметры

Alex_Ar

Новичок
народ так как выполнить метод класса с параметрами?
Просто метод call_user_func(array($class,$method))
А как передать методу параметры?
 

Alex_Ar

Новичок
class myclass
{
var $a;

function myclass($val)
{
$this->a = $val;
}

function show($b)
{
$c = $b+$this->a;
echo $c;
}
}
$class = "myclass";
$func = "show";
call_user_func_array(array(&$class,$func),array(10));

Ошибка - Fatal error: Using $this when not in object context in C:\Server\htdocs\localhost\www.php on line 14
 

SiMM

Новичок
Правильно. Объекта-то нет. Да и вызывается невесть что.
PHP:
class myclass {
  var $a;

  function myclass($val) {
    $this->a = $val;
  }

  function show($b) {
    $c = $b+$this->a;
    echo $c;
  }
}
$myclass = new myclass(5);
$class = "myclass";
$func = "show";
call_user_func_array(array(&${$class},$func),array(10));
PS: и вообще, когда даёшь код, используй тэг [php]код[/php]
 

Alex_Ar

Новичок
короче...я хочу написать парсер, который будет делать слеующее:
есть запись в html файле {news::listnews(5,40,true)}
мне надо заменить эту запись на результат выполнения метода listnews() класса news с параметрами какие я указал.
Методы самые разные могут быть, и $this используется. Есть предложения?

P.S. а то что я написал вверху, это чисто пример того что $this не работает...
И еще, ни метода ни названия класса я заранее знать не могу
 

SiMM

Новичок
Если метод - статический, то и вызывать его надо как статический. Если в методе используется $this - то это уже не статический метод.
PHP:
class myclass {
  function show($b) {
    echo $b;
  }
}
$class = "myclass";
$func = "show";
call_user_func_array(array($class,$func),array(10));
Соответственно, в шаблонах вызов статического метода делаешь как {news::listnews(5,40,true)}, динамического - как {news->listnews(5,40,true)}. Думаю, дальнейшие объяснения не требуются, ибо они очевидны.
 
Сверху