Introduction
An important feature of namespaces is the ability to refer to an external fully qualified name with an alias, or importing. PHP namespaces support following kinds of aliasing or importing −
- aliasing a class name,
- aliasing an interface name,
- aliasing a namespace name
- aliasing or importing function and constant names.
In PHP, aliasing is accomplished with the use operator.
use operator
Example
#test1.php <?php namespace mynamespace; function sayhello(){ echo "Hello from mynamespace\n"; } sayhello(); namespace mynewspace; function sayhello(){ echo "Hello from my new space\n"; } sayhello(); use \mynewspace\sayhello as hello; ?>
Output
Hello from mynamespace Hello from my new space
multiple use statements combined
Example
<?php namespace mynamespace; class myclass{ function test() { echo "myclass in mynamespace\n"; } } class testclass{ static function test() { echo "testclass in mynamespace\n"; } } use \mynamespace\myclass as myclass, \mynamespace\testclass; $a=new myclass(); $a->test(); $b=new \mynamespace\testclass(); $b->test(); ?>
Output
myclass in mynamespace testclass in mynamespace
Importing and dynamic names
substitute name of imported class dynamically
Example
<?php namespace mynamespace; class myclass{ function test() { echo "myclass in mynamespace\n"; } } class testclass{ static function test() { echo "testclass in mynamespace\n"; } } use \mynamespace\myclass as myclass; $a=new myclass; $b='myclass'; $c=new $b; ?>
The use keyword must be declared in the outermost or the global scope, or inside namespace declarations. Process ofimporting is done at compile time and not runtime. Therefore it cannot be block scoped. Following usage will be illegal
Example
<?php function myfunction(){ use myspace\myclass; // // } ?>
Included files will NOT inherit the parent file's importing rules as they are per file basis