引入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
-------------------------------------------------------------------------------------------------------------------