php – Joomla! – 如何自動載入類別庫或 composer 到全域

如果要載入我們自訂的類別,我們通常會使用 JLoader::registerNamespace(‘MyLib’, JPATH_LIBRARIES . ‘/src’); ,但如果要在任何地方例如元件、模組、外掛中使用自訂的 library ,而不打算每次都要寫,則必須透過使用 plugin 的功能來設計。以下 參考官方說明 來設計範例。

 

製作 plugin

先在 xml 填寫我們的資訊,接著在 php 設計 system 初始化後,調用 onAfterInitialise() 事件。而事件填寫我們要載入自訂的類別庫位置。

plugins/system/mylib/mylib.xml

 

plugins/system/mylib/mylib.php

  • Joomla! 自動載入的標準使用 PSR-0 而不是 PSR-4
  • 假設類別 Jsnlib\Hello 那會來自於 libraries/src/Jsnlib/Hello.php
  • 假設類別 Jsnlib\World 那會來自於 libraries/src/Jsnlib/World.php

安裝並啟用外掛

  1. 後台 > 擴充套件 > 管理 > 探索,新增我們的外掛
  2. 後台 > 擴充套件 > 外掛 > 搜尋 Mylib > 啟用外掛

若我們在 __construct() 測試輸出,那麼重新整理就能看上方出現文字,這就表示外掛確實啟用。

 

設計類別庫

libraries/src/Jsnlib/Hello.php

 

測試看看

在我們任何的 Component 中,可以寫

就能看到系統確實自動載入我們的要求了。當然,目前為止我們要求 Joomla! 自動載入的類別庫,都放在 libraries/ 底下,那如果透過 Composer 下載第三方的套件,那要怎麼設計呢?就這樣寫

如果要使用第三方套件如 Eloquent 取代 Joomla! 本身的資料庫 JDatabase ,那也是在這邊做全域設定。可以參考這篇 Joomla! 使用第三方 Eloquent 取代 JDatabase 連接資料庫

 

Comments

發表迴響