Re: [Fwd: Re: [PHP-DEV] Renaming namespaces to packages]
| From: | Gregory Beaver | Date: | Thu, 16 Aug 2007 16:12:45 +0000 |
| Subject: | Re: [Fwd: Re: [PHP-DEV] Renaming namespaces to packages] | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-31630@lists.php.net to get a copy of this message | ||
Hi,
All of the debate over whether this is a true namespace implementation
is in my opinion completely bogus (translate: I think "namespace" is a
fine choice for the reserved word, and "package" is a dangerously
misleading choice), but since there is so much noisy dissent, I have an
alternative proposal I'd like to float:
How about using the keyword "prefix" or "nameprefix" instead of
"namespace"? This will be clearer and can be easily defined with 2
sentences similar to the original proposal: "All class and function
names inside the file are automatically prefixed with the
(prefix|nameprefix) name. In other files, classes and functions can be
imported with different names (aliases) to eliminate naming conflicts or
reduce typing needed."
I quote from the original "Simple Namespace Proposal" message by Dmitry:
From the beginning:
> Main assumption of the model is that the problem that we are to solve is the
> problem of the very long class names in PHP libraries. We would not attempt
> to take autoloader's job or create packaging model - only make names
> manageable.
From the middle:
> Namespace definition does the following:
> All class and function names inside are automatically prefixed with
> namespace name.
As stated, because this proposal *only* defines a prefix for functions
and class names, it is not a packaging model. All package models in
existence define some kind of self-contained entity that groups related
*files* and their contents together in a way that allows them to be
"packaged" into a single thing, like a jar, a PEAR .tgz, or a .phar
file. This proposal does none of these things. Simply because the
prefix is defined per-file does not a package make. By the same logic,
using ".php" at the end of a file or ".dat" at the end of a file creates
special packages of php or dat information, because the extension
applies to the whole file at once. Simply defining the contents of a
file does not imply any organization whatsoever.
What the original proposal *does* do is provide a namespace prefix - it
defines a scope within which all names have a special prefix. This is
not rocket science.
<rant>On a personal note, if you feel you must reply to this thread
further, please follow this checklist:
1) is anything I am saying bring a new idea to the debate?
2) is there a patch that converts my new idea into a reality attached to
the message?
If you can't answer "yes" to either of these, please go immediately to
jail, do not pass go, do not collect $200.</rant>
Thank you to Dmitry for this much-needed idea.
Thanks,
Greg