In C++, STD was just a normal namespace with some classes and functions
in it, you didn't have to say "use std" unless you wanted to use
functions in the std namespace.

The "php::" namespace could just be a container for all of the functions
and classes that are currently thrown into the global namespace.

I think the name __php__ is too long and inconvenient to be used for a
namespace for all of the built in php functions. I would suggest "php::"
for built in php functions and "ext::<extension>::" for extension
defined functions.

On Fri, 2007-12-07 at 18:42 -0600, Larry Garfield wrote:
> On Friday 07 December 2007, Gregory Beaver wrote:
> 
> > > If new, future core extensions showed up in a reserved PHP::
> > > namespace, you would be >:-).
> >
> > Exactly - which is why you should never put classes, functions or
> > constants in the __php__ namespace.  The convention I am proposing is to
> > only use __php__ for code that *uses* re-usable components, not
> > *declares* them.  In this case, your example would be revised as:
> >
> > <?php
> > namespace Mylib;
> > class Date {}
> > ?>
> >
> > <?php
> > namespace __php__;
> > use Mylib::Date;
> > include 'autoload.php'; // note - require_once and () just slow things down
> > $a = new Date();
> > ?>
> >
> > This convention serves two purposes
> >
> > 1) library code is always explicitly "use"d
> > 2) name conflicts are impossible
> >
> > The suggestion to make "namespace __php__;" implicit is very
> > interesting, but would defeat its purpose, which is to separate
> > declarations from use.
> >
> > Another off-list suggestion was to make "use" outside of a namespace
> > declaration an error, as this is generally a bad idea that can lead to
> > many "gotchas".
> >
> > Greg
> 
> Doesn't strict C++ also have a requirement for a global namespace definition? 
>  
> It has been a very long time since I did any C++, but I seem to recall a 
> requirement for a "use std" or something like that directive that I never 
> actually understood. :-)
> 
> If there is a "named global namespace" __php__, then requiring it in order to 
> import anything makes sense.  It's one extra line of code and doesn't break 
> BC anymore than using the use keyword does.  
> 
> Another observation, if one takes the position that library code and "running 
> code" should always be separated, this setup would encourage that "best 
> practice" but does not absolutely require it.  That fits with the "doing 
> something dumb should be hard, but not impossible" philosophy. :-)  That 
> recommendation would definitely need to be well-documented.
> 
> I overall like this concept.  Kudos to Greg, as others have said.  One 
> question I would have is what is the performance hit of braces over a 
> keyword?  (Not a challenge; I genuinely don't know what the C implementation 
> differences would be that would make a difference.)  
> 
> -- 
> Larry Garfield                        AIM: LOLG42
> [EMAIL PROTECTED]             ICQ: 6817012
> 
> "If nature has made any one thing less susceptible than all others of 
> exclusive property, it is the action of the thinking power called an idea, 
> which an individual may exclusively possess as long as he keeps it to 
> himself; but the moment it is divulged, it forces itself into the possession 
> of every one, and the receiver cannot dispossess himself of it."  -- Thomas 
> Jefferson
> 

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

Reply via email to