""Guilherme Blanco"" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > For those that do not understand very well the explanation of jvlad... > > He's suggesting to change the class struct to be an scope struct, and > have a property that tells if it's a namespace or a class, and reuse > the implementation of class which already works very well. > The nested support is achieved afai understand through the Adjacency > List algorithm... can you confirm this to me? > > Just trying to be more clear to those that do not understand... if my > words are greek now.... GIYF (Google Is Your Friend). >
Yep. Thanks Guilherme for such a short explanation. (sorry my english is quite poor and not always clear enough) Namespaces create ambiguity with classes in php (which is a dynamic language btw) just because their natures are very close. Beside the other great things, class is intended to isolate its methods and properties, or group them together. Namespace is mostly for the same purposes. It should isolate classes as well as all other user-land entities or group them together. From the end-user perspectives, in most cases it does not really matter if a particular value is stored as a static property of a class or as a global variable in a namespace. Same goes for the static method of a class vs function in the namespace. What's important is to know the scope name. If user uses a variable myentity::$var, it's safficient to lookup for myentity sub-scope in the current scope, then lookup for $var in the found (or just created) sub-scope. You see, it's not always needed to distinguish classes vs namespaces. In some cases the namespace can be resolved in the compile-time. For example if the namespace is already defined, so it's known to be namespace and therefore compiler should be smart enough to make early binding. For the cases when namespace is referenced in the script beforehand, so it's not known whether it is a namespace or a class, it can be resolved with late-binding, using absolutely the same technique as php uses for for resolving the classes. I'm sure this is an efficient way of implementing namespaces in php and with this implementation they will be very useful. jv -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php