php - 關於namespace和use的不解之處
代言
代言 2017-06-24 09:42:35
0
3
919

使用namespaceuse的時候有些懷疑
在框架中隨便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);
            }
        }
    }    
代言
代言

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!