On Tue, 2007-12-04 at 22:26 -0600, Larry Garfield wrote:
> On Tuesday 04 December 2007, Derick Rethans wrote:
> 
> > 4. What is wrong with simple prefixes in the first place? Both PEAR_*,
> >    Zend_*, ezc*, and ezp* are perfectly acceptable markers for different
> >    'namespaces'.  We could optionally create a registry on php.net for
> >    this to avoid conflicts.
> 
> Although most people on the list seem to be coming at this problem assuming 
> classes, I want to offer a counter-example that is all functions.
> 
> In Drupal, our plugin architecture is based on function naming.  When a given 
> event "omg" occurs, something akin to the following frequently happens (a bit 
> simplified):
> 
> $hook = 'omg';
> foreach ($modules_that_are_loaded as $module) {
>   $function = $module .'_'. $hook;
>   if (function_exists($function)) {
>     $return[] = $function();
>   }
> }
> return $return;
> 
> It's a very powerful mechanism, and quite flexible.  The one thing it doesn't 
> offer is, given a function name, determine what module and hook/event it is 
> for.  That's because we use PHP core coding standards, which say to use 
> function_name for all functions.  So given this function name:
> 
> views_do_stuff()
> 
> Is that the "do stuff" hook from the "views" module/plugin, or the "stuff" 
> hook from the "views_do" module?  Excellent question, and one that cannot be 
> reliably solved.  (There is a module called "views", but nothing is stopping 
> anyone from writing a "views_do" module and declaring their own "stuff" 
> hook.)

<?php

$hook = 'omg';
foreach ($modules_that_are_loaded as $module)
{
    $function = $module .'__'. $hook;
    if (function_exists($function))
    {
        $return[] = $function();
    }
}
return $return;

?>

There ye have it!

<?php

list( $module, $hook ) = explode( '__', $function );

?>

Namespace support is for people who didn't name their classes/functions
properly. I'm not for or against it.

Cheers,
Rob.
-- 
...........................................................
SwarmBuy.com - http://www.swarmbuy.com

    Leveraging the buying power of the masses!
...........................................................

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to