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

Reply via email to