- preg_replace_callback: documentation ( source)
- sprintf: documentation ( source)
<?php
echo Module::work('hello world.'), "\n";
echo MyModule::work('hello world.'), "\n";
echo YourModule::work('hello world.');
abstract class Module
{
private static $mask = '[[[%s]]]';
public static function work($it) {
return preg_replace_callback('~\w+~', 'static::replace', $it);
}
private static function replace($matches) {
return sprintf(static::$mask, $matches[0]);
}
}
abstract class MyModule extends Module
{
protected static $mask = '{{{%s}}}';
}
abstract class YourModule extends Module
{
protected static $mask = '***%s***';
public static function work($it) {
return call_user_func('parent::work', $it);
}
}