Hi, Earlier I proposed this construct which fell on deaf ears, maybe since it means a new keyword "nameof":
namespace Foo\Bar; class Baz {} $name = nameof Baz; // 'Foo\Bar\Baz' The same expansion to FQN happens for imports/aliases with "use XXX". I want to suggest an alternative approach which could work just the same internally, but without a new keyword: namespace Foo\Bar; class Baz {} $name = Baz::__NAME__; // 'Foo\Bar\Baz' [IMPORTANT] Baz::__NAME__ should be replaced at parse time (like the magic constants), so that class Baz is not autoloaded (we don't need it autoloaded just for the name). Why is this good: 1) Would cover our basic needs for this feature when passing class names around for factories, callbacks, strategies, handlers and so on. 2) Doesn't introduce a new keyword, and apparently class constant __NAME__ is very rarely used by anyone, if at all (Google Code Search shows 0 hits on PHP code). 3) It's intuitive as it follows the conventions established by the other magic constants, and serves a very similar purpose. Regards, Stan Vassilev