使用namespace和use的时候有些疑惑
在框架中随便use某个带有namespace(命名空间)的文件,直接new就可以实例化获得对象
然而 我在本地随便搞了个目录测试的时候
发现在调用有namespace文件的时候
不能直接采用use的方式引用,进行实例化
而是先要require一下
才能正常实例化
然而我排查框架的时候,发现好像并没有事先requrie要实例化的文件,但是use之后就直接可以new进行实例化了,请问这是什么原因呢
附上自己的本地测试目录文件
目录结构
library
-->core.php
test.php
core.php
namespace library;
class core
{
}
test.php
require_once 'library/core.php'; // 必须要require
// 第一种实例化
// use \library\core;
// $obj = new core();
// 第二种实例化
$obj = new \library\corecore();
var_dump($obj);
再附下框架中使用use的部分截图
想不通...搞不懂...
感谢各位大佬的回答,我早上一定没吃药,嗯!结帖~
补充个加载类的常识
spl_autoload_register($callback);
/**
* 自动加载类库
* @param string $strClass 方法名
*/
static public function load($strClass)
{
$strClassPath = CHARM . '\\' .$strClass . APPEXT;
if(in_array($strClass, self::$arrClassMap)) {
return TRUE;
}else {
if(is_file($strClassPath)) {
require_once $strClassPath;
self::$arrClassMap[$strClass] = $strClass;
}else {
throw new \Exception("找不到类库 -- " . $strCtrlFile);
}
}
}