1.限定名称,非限定名称,完全限定名称
namespace ns\a1;
echo __NAMESPACE__ . '<br>';
class lei{
public static $name = '空间ns\a1 - 类lei';
}
//这里是非限定名称 没有任何路径
echo lei::$name;
namespace ns;
echo __NAMESPACE__ . '<br>';
echo \ns\a2\lei::$name . '<br>';
// 限定名称 本空间和另一个空间名称开头一致
echo a2\lei::$name;
class lei{
public static $name = '空间nsa2 - 类lei';
}
namespace ns\a2;
echo __NAMESPACE__ . '<br>';
class lei{
public static $name = '空间ns\a3 - 类lei';
}
// 完全限定名称 从根目录开始 开头带/
echo \ns\a1\lei::$name;
总结:
非限定名称 没有任何路径
限定名称 本空间和另一个空间名称开头一致
完全限定名称 从根目录开始 开头带/
2.命名空间的别名, 与类别名
namespace ns1;
class lei
{
public static $name = '空间ns1 - 类lei';
}
namespace ns2;
class lei1
{
public static function index()
{
return '这里是个方法1可以写html 可以加载一个文件';
}
}
class lei2
{
public static function cate()
{
return '这里是个方法2可以写html 可以加载一个文件';
}
}
namespace ns3;
//将空间ns1变名为 n
use ns1 as n;
echo n\lei::$name . '<hr>';
//将ns1\lei类的名称更改 类名称可以省略别名
use ns1\lei;
echo lei::$name;
3. 类文件的自动加载器
//先把自动加载器文件加载过来
require 'autoload.php';
//自动加载器里面的代码
try {
// 注册一个自动加载器 参数是回调函数 函数就是类名
spl_autoload_register(function($className){
//1. 应该将类名中的命名空间的分隔符转为目录分隔符
$path = str_replace('\\', DIRECTORY_SEPARATOR, $className);
// 2. 生成真正要加载的类文件名称
$file = __DIR__ . DIRECTORY_SEPARATOR . $path . '.php';
// 3. 加载这个文件
require $file;
return $file;
});
} catch (Exception $e) {
die($e->getMessage());
}
//自动加载器里面的代码结束
//这里很重要 你不use给他别名 在echo他的路径就不会显示
use inc\lib\Demo1;
//打印
echo Demo1::say();
总结:抽空多复习,多看手册,写案例代码