Re: Dynamic class constants

From: Date: Wed, 06 Oct 2004 03:28:25 +0000
Subject: Re: Dynamic class constants
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-13191@lists.php.net to get a copy of this message
Andi, I tend to agree with Bob on this one. Class vs. instance is an important distinction and, although the syntactic sugar of being able to reference a static member directly through an object and a scope resolution operator could be nice, I don't think the semantics are necessarily 100% clear. As with my other positions, I'm probably rather pedantic, but I believe that scope resolution operator should be used for `compile-time'' notions, rather than `runtime'' notions like referencing the class of an object, rather than inferring it from an instance. I would say that existing and additional features of the object model provide for this technique in a manner more consistent with other object systems. Specifically, the class, or base class of an object should be known if a user is to reference static members. In cases where the exact subclass is required, get_class() provides a suitable technique. The notation of $var::member should be reserved for expansion of a string in $var, naming a known class. I believe the class type hints also solidify the design patterns and relieve some possibility of being handed an object that may not conform to a given interface (exposing the required static members), limiting the application of this patch. All in all, although it would be handy, I'm not sure that deviation from other C-style languages in allowing scope resolution on instance variables really adds very much benefit beyond syntactic sugar and I fear that it may cause some undue confusion depending on variable naming (``Is that an object whose class is being referenced at runtime or a string that is being expanded and considered a class name?''). Thanks, -Noah Andi Gutmans wrote:
Any other opinions? At 11:34 PM 10/4/2004 -0700, Robert Silva wrote:
While this patch does add convienence at times, I don't think the benefit is great enough to blur the lines between class and object properties/methods. As was stated in the "goto" discussions, the language designers have somewhat of a responsibility to promote proper coding practices (which should also include standards to some extent). Bob Silva


« previous php.internals (#13191) next »