I have a question for you!
Normally, if you call a callback function within an OOP context you have to use array(&$this, 'callback_function')
That's what I figured out.
But now I want to call a callback in an external class, due to having to much callback_functions. I want to give them an own class for structure reasons.
I thought: "Ok, make an instance of this class and pass it instead of $this."
So I tried it with array($cb, 'callback_function')
and array($this->cb, 'callback_function')
but it won't work.
What am I doing wrong?
Thanks for your help!
Edit:
In my basic class I have:
function __construct()
{
// some other vars here
$this->cb = new Callback();
}
And calling it with:
$newline = preg_replace_callback("/(^#+) (.*)/", array(&$this->cb, 'callback_heading'), $newline);
And in my callback class I have:
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.">";
}
Say your external class looks like this
If your callback function makes no reference to $this, you can call it statically like so:
Otherwise, your method should work in theory.
Read more about callbacks
First a comment:
No, normally (these days) it's
array($this, 'callback_function')
- without the&
.Then, instead of
$this
you can put any variable that's representing an object:or
This just works, see the documentation of the callback pseudo type in the PHP Manual.
More similar to the code fragments of your question: