ThinkPHP5——引用vendor或extend里的第三方類(多種方法)


引入extend第三方類

方法一:命名空間引入

我們只需要把自己的類庫包目錄放入EXTEND_PATH目錄(默認為extend,可配置),就可以自動注冊對應的命名空間。

我們在extend目錄下面新增一個lib目錄,然后定義一個\lib\Mycla類( 類文件位於extend/lib/Mycla.php)如下:

復制代碼
namespace lib;

class Mycla
{
    public function index(){
        echo "這是Mycla";
    }
}
復制代碼

我們就可以直接實例化和調用:

$myc = new \lib\Mycla();
$myc->index();

也可以使用use:

use lib\Mycla;

$myc = new Mycla();
$myc->index();

還有一點要注意,命名空間的命名必須要根據目錄結構:

如果你的命名空間不是按照這個規則命名,你調用這個類就會報找不到

方法二:類庫導入

如果你不需要系統的自動加載功能,又或者沒有使用命名空間的話,那么也可以使用think\Loader類的import方法手動加載類庫文件,例如:

復制代碼
        // 引入 extend/qrcode.php;
        Loader::import('qrcode', EXTEND_PATH);
        // 助手函數
        import('qrcode', EXTEND_PATH);
        $qrc = new \qrcode();
        $qrc->index();

        // 引入 extend/tes/Ind.php;第三參數是后綴名,不加也可以
        Loader::import('tes.Ind', EXTEND_PATH,'.php');
        // 助手函數;第三個參數后綴名,不加也可以
        import('tes.Ind', EXTEND_PATH);
        $ind = new \Ind();
        $ind->index();
復制代碼

 

 

引入vendor第三方類

vendor的不能使用命名空間引入,只能使用函數助手或Loader::import

復制代碼
// 引入 vendor/tes/Ind.php
Loader::import('tes.Ind', VENDOR_PATH,'.php');
// 助手函數
import('tes.Ind', VENDOR_PATH,'.php');
//助手函數,快速導入第三方框架類庫
vendor('tes.Ind');

$ind = new \Ind();
$ind->index();
復制代碼

 

 

使用include_once或include引入

如果命名空間和函數助手都不想使用,也可以直接使用include_once或include這兩個php原生方法:

include_once '../extend/tes/Ind.php';
$ind = new \Ind();
$ind->index();

同樣,如果想引入vendor下的文件,只需要改一下名稱就可以了

還有一點要注意,上面的代碼我是在控制器里寫的,剛開始導入我是沿着文件夾一個一個返回,結果報這個類找不到:

include_once '../../../extend/tes/Ind.php';

這里是錯誤例子鵝。include_once或include使用方法都一樣,我就不做演示了

 

 

引入extend或vendor里面的數組

有些情況我們定義了數組放在extend或vendor下文件夾里(一般都放在extend),這樣就可以公共使用數組

extend/tes/conf.php;如果不寫return,也可以直接調用$student,最好預先定義不然報紅(不定也不會報錯)

復制代碼
<?php
return $student = [
    "Id"    =>  1,
    "name"  =>  "LHS",
    "age"   =>  "21"
];
復制代碼

在index控制器引入,這樣就可以使用數組:

//預先定義,不然報紅(注:不定義也不會報錯)
//        $student = [];
$student = include_once '../extend/tes/conf.php'; print_r($student);

同樣,如果想引入vendor下的文件下的數組,只需要改一下名稱就可以了;還有引入數組建議使用這種方法,Loader::import和import都不能引入數組

轉載:https://www.cnblogs.com/bushui/p/11996500.html

 

-------------------------------------------------------------------------------------------------------------------

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM