[前言]
之前测试命名空间,文件头部明明定义了namespace,并且类文件的存放位置与相对路径也一致,但use之后仍提示“找不到类”,为什么?
[原理分析]
1.根据use的值确定类文件的物理存储位置,然后通过require_one将类文件加载;
2.类文件名称与类名称需要有一定的对应规则,方便autoload方法找到并加载类文件;
3.类文件的namespace值需要与实际相应路径一致。
4.常见错误:类文件的namespace值与实际路径不一致,类名称与类文件名称没有对应关系。
[示例目录结构]
namespaceDemo
--mk.php
--libs
---Demo.class.php
[示例代码]
mk.php
run();
Demo.class.php
index();
}catch (\Exception $e) {
echo 'exception:' . $e->getMessage() . ' ' . $e->getFile() . ' ' . $e->getLine();
} catch (\Error $e) {
echo 'error:' . $e->getMessage() . ' ' . $e->getFile() . ' ' . $e->getLine();
}
}
private function index(){
echo 'This is '.__CLASS__.' class';
exit;
}
}
直接访问mk.php,将会调用相关方法。