smarty icon indicating copy to clipboard operation
smarty copied to clipboard

Allow built-in modifiers override

Open 2Vince opened this issue 1 year ago • 3 comments

A proposition to fix #1048 (and may be a part of #1011 too)

This is to prevent modifiers added by registerPlugin function from beeing silently ignored by DefaultExtension. More details in #1048

2Vince avatar Jul 31 '24 09:07 2Vince

Sorry, but I don't like this approach. The registerplugin methods are the "old" way to register plugins. I'm in favor of creating new Extensions.

Wouldn't it be easier to switch the default loading order of the Extensions? It is now: core, default, BC. We could change it to core, BC, default.

wisskid avatar Jul 31 '24 10:07 wisskid

Thanks for your quick reply.

You're right, it would have been be easier to switch the default loading order of the Extensions : Core, BC, then Default. But it does not handle the case where we want to register a "Smarty::PLUGIN_MODIFIER" (not a compiler one), wich has an equivalent in DefaultExtension->getModifierCompiler(). For example :

//This modifier will be silently ignored, even if DefaultExtension is set at the end.
$smarty->registerPlugin(Smarty::PLUGIN_MODIFIER,"json_encode",[$this,"myJsonEncodeModifier"])

In that case DefaultExtension->getModifierCompiler() is going to take the lead anyway.

Side question : I understand you consider "registerPlugin" method as old way to register Plugins. Does this mean that it could be deprecated in a near future ?

2Vince avatar Jul 31 '24 12:07 2Vince

I understand you consider "registerPlugin" method as old way to register Plugins. Does this mean that it could be deprecated in a near future ?

Yes, it might.

wisskid avatar Nov 21 '24 10:11 wisskid