..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.


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

Reply via email to