..not an internals question me thinks ... redirecting to generals mailing list mike schreef: > I am trying to figure out a strategy for multiple output formats on a > site, and it seems like I can have functions defined by default, but > have them defined -after- I've included the targetted format first. > > However that would require > > file1.php: > > function foo() {} > > file2.php > > if(!function_exists('foo')) { > function foo() {} > } > > Is this a very expensive thing to do? There would be a good number of > functions that would be leveraging this. Is it a no-no? or is it > pretty cheap? it busts opcode caches. so I wouldn't recommend it at all, don't do conditional includes or function/class definitions if you can help it. idea: use some kind of registry pattern to register outputters, the the code requiring an outputter can request it from the register. 1. I would think about using a class for each outputter (instead of a function) ... chances are you will have need for more than just 'foo' 2. register all the default outputters 3. register some optional, overriding outputters dependent on the context. <?php abstract class OutputRegistry { private $objs; static function register($key, $obj) { self::$objs[$key] = $obj; } static function get($key) { return self::$objs[$key]; } } // default OutputRegistry::register('renderer', new HTMLRenderer); // overriding (in some other file) to allow creating JSON output OutputRegistry::register('renderer', new JSONRenderer); > > Thanks > - mike > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php