John Rankin writes:
> in MarkupToHTML() I export a global array with the $pagename local
> variable and extract() it in the callback functions. If there is a better
> way, that is compatible with new and old PHP versions, I'll gladly review
> it and use it.

Google suggested this alternative, using object-method callback:

class Callback {
    public $parameter;

    public function handle($matches) {
        return $matches[1] . ($matches[2] + $this->parameter);
    }
}

$instance = new Callback();
$instance->parameter = 99;
echo preg_replace_callback("|(\d{2}/\d{2}/)(\d{4})|", array($instance,
'handle'), $text);

This is very interesting and possibly usable for the core. It is cleaner to pass variables this way, even if it may be less concise.

Any advice on whether I should use global variables or the object-method
to pass variables to the callback function? The code I'm looking at uses
preg_replace with /e a lot, and I'm a little reluctant to use global
variables to pass parameters.

I am reluctant too to use global variables, but that's a single global variable - array - holding the local variables.

Classes and callbacks have changes in different PHP versions so it may be tricky to write one that is compatible with PHP 4.2 to 5.5. But not impossible.

Petko


_______________________________________________
pmwiki-users mailing list
pmwiki-users@pmichaud.com
http://www.pmichaud.com/mailman/listinfo/pmwiki-users

Reply via email to