使用namespace
和use
的時候有些懷疑
在框架中隨便use
某個帶有namespace
(命名空間
)的文件,直接new
就可以實例化取得物件
然而我在本地隨便搞了個目錄測試的時候
發現在調用有namespace
文件的時候
不能直接採用use
的方式引用,進行實例化
而是先要require
一下
才能正常實例化
然而我排查框架的時候,發現好像並沒有事先requrie
要實例化的文件,但是use
之後就直接可以new
進行實例化了,請問這是什麼原因呢
附上自己的本機測試目錄檔
目錄結構
library
-->core.php
test.php
core.php
#<?php
namespace library;
class core
{
}
test.php
#<?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);
}
}
}
雷雷
註冊自載 https://github.com/TIGERB/eas...
樓主用的是CI框架吧框架已經幫你spl_autoload_register($callable);過了通俗的說,你use哪個類,它就幫你require_once哪個類
具體代碼實現可以看看CI的這個類
Loaderader https://github.com/bcit-ci/Co...