Hi.
With pecl/http (DEV-2 branch) and the Functional extension (on github)
both creating namespaces within the extension, I think there is a
requirement for a mechanism to allow an extension to record the
namespace(s) that it has, in a similar fashion to how functions and
classes are known to core.
On the surface, the namespace seems to be consumed by the class name
or function name.
ReflectionClass and ReflectionFunciton both have a getNamespaceName()
method, but there is no corresponding method for ReflectionExtension,
which would need to getNamespaceNames() as an extension could
potentially register multiple namespaces - maybe nested ones.
In both of these methods, the namespace is simply extracted from the
current entity name, but without a way of recording the namespace(s)
provided by an extension.
I think the following should exist
array get_declared_namespaces ( [ bool $categorize = false ] ) Returns
the namespaces currently defined. If categorized, the namespaces are
categorised by the extension that loads them or with a key of 'user'
for user defined namespaces.
and
array ReflectionExtension::getNamespaces() Returns the namespaces for
the extension being reflected.
And I think that phpinfo()
should output a "Registered Namespaces"
right at the top of the page, alongside the Registered Streams.
But, trawling all the classes and functions, extracting and
aggregating the namespace would really not seem to be the way to go.
And that wouldn't take into account the user defined namespaces.
So, (unless I'm mistaken and missing something), an extension needs to
record its namespaces somewhere along with userland namespaces.
Initially, I thought that putting a pointer to a list in
zend_module_entry would be enough to allow the php core code to pick
it up from the extension, but that would need to be at a suitable
version change rather than mid-cycle.
But really, this is out of my depth now.
Maybe a mentor/mentee would be useful here.
Regards,
Richard.
--
Richard Quadling
Twitter : EE : Zend : PHPDoc
@RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY : bit.ly/lFnVea
Hi!
With pecl/http (DEV-2 branch) and the Functional extension (on github)
both creating namespaces within the extension, I think there is a
requirement for a mechanism to allow an extension to record the
namespace(s) that it has, in a similar fashion to how functions and
classes are known to core.
There's no such thing as "registered namespaces", at least in the
engine. Namespace is just a part of class/function name. You could
enumerate classes/functions and split their names, but I'm not sure for
what such list will be useful. Could you explain?
But, trawling all the classes and functions, extracting and
aggregating the namespace would really not seem to be the way to go.
And that wouldn't take into account the user defined namespaces.
Again, there's no such thing as list of user defined namespaces, at
runtime. You'd have to go through all classes/functions and split their
names. Again, I'm not sure what would be the use of it.
--
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227
Hi!
With pecl/http (DEV-2 branch) and the Functional extension (on github)
both creating namespaces within the extension, I think there is a
requirement for a mechanism to allow an extension to record the
namespace(s) that it has, in a similar fashion to how functions and
classes are known to core.There's no such thing as "registered namespaces", at least in the engine.
Namespace is just a part of class/function name. You could enumerate
classes/functions and split their names, but I'm not sure for what such list
will be useful. Could you explain?But, trawling all the classes and functions, extracting and
aggregating the namespace would really not seem to be the way to go.
And that wouldn't take into account the user defined namespaces.Again, there's no such thing as list of user defined namespaces, at runtime.
You'd have to go through all classes/functions and split their names. Again,
I'm not sure what would be the use of it.
Currently, I can find the names of functions, classes and interfaces -
be they from an extension or userland code.
But I can't get namespaces, or their aliases.
I'm not totally sure of any other use. That's why I was asking.
As (or if) more extensions start to use namespaces to protect their
contents from name collision, we are probably going to have namespace
collision before long.
--
Richard Quadling
Twitter : EE : Zend : PHPDoc
@RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY : bit.ly/lFnVea
Hi!
Currently, I can find the names of functions, classes and interfaces -
be they from an extension or userland code.But I can't get namespaces, or their aliases.
Names of functions and classes are namespaces. As for aliases, these
are purely compile-time concepts, so there's nothing to get in runtime.
--
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227