1. 程式人生 > >TP5裡面extend和vendor的區別

TP5裡面extend和vendor的區別

composer的會安裝到vendor裡,自己寫的,可以扔extend裡

通過了解tp5的目錄結構,我們知道其中有兩個目錄是紡織擴充套件類庫檔案的。

extend是放置自定義或者其他類檔案的。

vendor目錄是放置composer類庫檔案的。

當我們的第三方類庫檔案是下載的,而且類檔案目錄一層又一層,我們開發當中要按照tp5的命名規範來做效率就會非常的低,而且面向物件程式設計就是拿來即用,何必還要動手去改類檔案的原始碼。

其實tp5給了我們一種方式去實現不用名稱空間來載入第三方的類!

我們將類檔案放到extend目錄下,在控制器中要用到類的話可以通過import(),函式手動引入類檔案,引入方法官方手冊中有說明(架構->自動載入->類庫匯入)。

  1. // 引入 extend/qrcode.php
  2. Loader::import('qrcode', EXTEND_PATH);
  3. // 助手函式
  4. import('qrcode', EXTEND_PATH);
  5. // 引入 extend/wechat-sdk/wechat.class.php
  6. Loader::import('wechat-sdk.wechat', EXTEND_PATH,'.class.php');
  7. // 助手函式
  8. import('wechat-sdk.wechat', EXTEND_PATH,'.class.php');

手動引入了類檔案後,進行例項化需要特別注意了!

我們需要在 new 類檔案()時,在類檔案前面加一個 “ \ ” ,即如下:

$obj = new  \Test();

加 ‘\’ 的原因是,tp5的名稱空間自動載入規則:自動載入的實現由think\Loader類庫完

成,自動載入規範符合PHP的PSR-4,根據對規則的瞭解,放在extend目錄下沒有定義

名稱空間的類檔案,就是全域性化的類。例項化全域性化的類的話,即用"\"放在類名前表

示此類是全域性類,就new一個全域性化的類!