Hi,

With namespaces and "use" we'll be introducing a new kind of discrepancy 
between a string reference to a function, and the short "use"-enhanced name for 
the same function. This becomes very painful, when I want to load a function 
before I run it.

Today I would do (due to lack of function autoload.. hopefully one day..):   

F::loadFunc('Foo_Bar_Baz');  
echo Foo_Bar_Baz();

Tommorow I could attempt to do:

use Foo\Bar as B;
F::loadFunc('B\Baz'); <-- failure, strings are not resolved agains the use 
statements
echo B\Baz(); 

so it becomes:

use Foo\Bar as B;
F::loadFunc('Foo\Bar\Baz'); <-- works, but negates some of the use for "use"...
echo B\Baz(); 

I suggest we introduce a new construct which will return a string when passed 
any identifier to resolve against the current file's use clauses:

nameof Symbol\Name;

With this identifier, the above example can be "normalized" to the following 
code:

use Foo\Bar as B;
F::loadFunc(nameof B\Baz); <-- will send 'Foo\Bar\Baz' as the argument
echo B\Baz(); 

NOTE: As a side effect this means less direct writing of string function/class 
names, and less complaints about \ being the escape characters.

Regards, 
Stan Vassilev 

Reply via email to