Re: Re: New Feature: Fully qualified class name resolution as scalar with class keyword

From: Date: Tue, 17 Apr 2012 11:18:56 +0000
Subject: Re: Re: New Feature: Fully qualified class name resolution as scalar with class keyword
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-60070@lists.php.net to get a copy of this message
May I suggest using foo::__CLASS__ instead of foo::class ? It's longer, but closer to what already exists for this semantic (class name as string), don't you think ?
As Marco suggested, I think using __CLASS__ would be confusing to some. __CLASS__ generally means, "where you see this, replace it with the class you are in right now". I generally don't like to draw comparisons too closely to Java and .NET, but Java has this, they call it a "class literal", which works the same way as described in my new feature: http://stackoverflow.com/questions/2160788/what-is-a-class-literal-in-java In .net, if a type is a SystemType.Type object (which I think are all types), you can simply call a function on it to get the name: http://msdn.microsoft.com/en-us/library/9f49ew66.aspx In addition, I am unsure if there would be any BC issues with your proposed syntax. I do know with mine (::class) does not pose any BC issues since the class keyword was limited to declaring a class only. At least, the tests prove this, and I can't find any other usages of T_CLASS in the parser.
Personnaly, I would say that an RFC would be good for historical reference and documentation.
I think you're right, I'll do this today. -ralph

« previous php.internals (#60070) next »