命名空间常用术语
全局成员(4):类,接口,常量,函数
全局空间:\这个反斜杠就是代表根目录的意思;
完全限定名称:从反斜杠开始一层一层打开,类似于绝对路径;
限定名称: 开头无反斜杠,中间至少有一个反斜杠,从当前目录开始,类似于相对路径;
非限定名称:无反斜杠,直接上类名,在当前目录。
魔术常量
魔术常量与常量有何不同,魔术常量不允许用户定义,是系统自带的,会随着使用场景不同而改变值
namespace返回当前命名空间
class 返回一个完全限定名称的类名称
METHOD返回一个完全限定名称类中的方法
FUNCTION返回函数名称
::class返回具有完全限定名称的类名
完全限定名称用法
namespace xiaoyu;
//完全限定调用类
//首先先将我们的脚本导入进去
require 'demo1.php';
$result = \xiaoyu\lib\Demo::test();
//完全限定调用接口
//首先先将我们的脚本导入进去
require 'demo2.php';
class Demo implements xiaoyu{
public static function test(){
return '小雨';
}
}
$result = \xiaoyu\Demo::test();
//完全限定调用常量
//首先先将我们的脚本导入进去
require 'demo3.php';
$result = \xiaoyu\define\MY_SITE;
//完全限定调用函数
//首先先将我们的脚本导入进去
require 'demo4.php';
$result = \xiaoyu\fun\myfun();
//限定名称函数
$result = fun\myfun();
echo '<pre>'.print_r($result,true).'<pre/>';
导入四类全局成员
namespace xiaoyu;
require 'demo1.php';
//导入全局成员类
use xiaoyu\lib\Demo;
$result = Demo::test();
//导入全局成员接口
require 'demo2.php';
use xiaoyu\api\iTest;
class Demo1 implements iTest
{
public static function test()
{
return class_implements(self::class);
}
}
$result = Demo1::test();
//导入全局成员常量
//导入常量和函数的时候需要在use 后面声明一下是 const还是function
require 'demo3.php';
use const xiaoyu\define\MY_SITE;
$result = MY_SITE;
//导入全局成员函数
require 'demo4.php';
use function xiaoyu\fun\myfun;
$result = myfun();
echo '<pre>'.print_r($result,true).'<pre/>';
导入别名方式
namespace xiaoyu;
//别名引用
require 'demo2.php';
use xiaoyu\api\iTest as Test;
class Demo implements Test
{
public static function test()
{
return class_implements(self::class);
}
}
$result = Demo::test();
echo '<pre>'.print_r($result,true).'<pre/>';