У меня к вам вопрос!
Обычно, если вы вызываете функцию обратного вызова в контексте ООП, вы должны использовать array(&$this, 'callback_function')
Это то, что я понял.
Но теперь я хочу вызвать обратный вызов во внешнем классе из-за большого количества callback_functions.Я хочу дать им собственный класс по структурным соображениям.
Я подумал: «Хорошо, создайте экземпляр этого класса и передайте его вместо $ this».
Поэтому я попробовал его сarray($cb, 'callback_function')
и array($this->cb, 'callback_function')
но это не сработает.
Что я делаю не так?
Спасибо за вашу помощь!
Редактировать:
В моем базовом классе у меня есть:
function __construct()
{
// some other vars here
$this->cb = new Callback();
}
И я вызываю его с помощью:
$newline = preg_replace_callback("/(^#+) (.*)/", array(&$this->cb, 'callback_heading'), $newline);
И в моем классе обратного вызова у меня есть:
class Callback
{
function __construct()
{
$this->list = array("num" => 0, "dot" => 0, "normal" => 0);
$this->td = array("strike" => false, "bold" => false, "italic" => false, "underline" => false, "code" => false);
}
public function callback_heading($parameter)
{
$hashs = strlen($parameter[1]);
$hashs++;
if($hashs > 6)
$hashs = 6;
return "<h".$hashs."><span class=\'indented\'>".$parameter[1]."</span><strong>".$parameter[2]."</strong></h".$hashs.">";
}