亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 后端開發(fā) php教程 在 Joomla 中連接第三方 PHP 庫

在 Joomla 中連接第三方 PHP 庫

Dec 28, 2024 am 02:15 AM

PHP 庫很方便,因?yàn)榭梢詮膽?yīng)用程序中的任何位置訪問它們:從插件、組件模型、模塊等。如果有人已經(jīng)解決了類似的問題并將其設(shè)計(jì)為庫(甚至更新了它),將這個(gè)庫連接到您的 Joomla 是有意義的。例如,要為在線商店開發(fā)支付方式,您需要支付聚合器的官方庫?;蛘吣鷮δ承〤RM官方的PHP SDK是否滿意。

作曲家

Joomla 不支持直接使用 Composer。為了在工作中使用該庫,您需要將其“包裝”在 Joomla 擴(kuò)展類型庫中并安裝它。在嚴(yán)肅的項(xiàng)目中,采用修復(fù)項(xiàng)目所有組件版本的方法:代碼經(jīng)過多次檢查、測試并允許在生產(chǎn)中工作。

您使用您的庫創(chuàng)建一個(gè)包,將其安裝在您需要的任何地方。隨著庫的新版本發(fā)布,您可以更新包裝器并獲得使用 Joomla 擴(kuò)展的所有優(yōu)勢:以標(biāo)準(zhǔn)方式更新擴(kuò)展,包括通過 CLI。在更新等之前,請?jiān)诠芾韰^(qū)域中查看擴(kuò)展程序的變更日志

Connecting third-party PHP libraries in Joomla
更新到 Joomla 5 之前,請?jiān)诠芾韰^(qū)域中查看變更日志擴(kuò)展。

Joomla、PSR、Symfony

Joomla 符合 PSR 標(biāo)準(zhǔn),因此在這方面使用它很方便。 Joomla 核心中包含一些 Symfony 軟件包(控制臺、字符串、vardumper、yaml、錯誤處理程序等),因此如果您突然想要添加更多軟件包,它們將適合并運(yùn)行良好。除了庫/供應(yīng)商中的 Symfony 組件之外,您還可以看到 Joomla 中還有哪些有價(jià)值的內(nèi)容。

如何將第 3 方 PHP 庫包裝在 Joomla 擴(kuò)展中?

沒什么復(fù)雜的。庫文件通常位于 src 文件夾中。在此文件夾旁邊,您需要根據(jù)文檔 (manual.joomla.org) 創(chuàng)建 Joomla 擴(kuò)展的 XML 清單。然后我們將所有內(nèi)容打包到 zip 存檔中,就是這樣!可以安裝了。

如果您需要在數(shù)據(jù)庫中擁有自己的表才能使庫正常工作,則需要在安裝或更新過程中使用 SQL 查詢添加必要的文件。由于 Joomla 4 使用名稱空間,因此在擴(kuò)展的 XML 清單中指定此名稱空間非常重要。以下是 Joomla 庫的 XML 清單的縮寫示例。

<?xml version="1.0" encoding="UTF-8" ?>
<extension type="library" method="upgrade">
     <name>WebTolk AmoCRM library</name>
     <libraryname>Webtolk/Amocrm</libraryname>
     <version>1.2.1</version>
     ...
     <namespace path="src">Webtolk\Amocrm</namespace>
     <files>
          <folder>src</folder>
          <filename>amocrm.xml</filename>
     </files>
</extension>

;標(biāo)簽意味著我們存檔中的 src 文件夾將被復(fù)制到 JPATH_SITE/libraries/Webtolk/Amocrm。在中部分,我們指出需要從檔案中填寫的內(nèi)容。和 WebtolkAmocrm表示必須為 JPATH_SITE/libraries/Webtolk/Amocrm 中的 src 文件夾注冊命名空間 WebtolkAmocrm。

重要注意事項(xiàng)!

  • 在 Joomla 4.2.7 之前,事實(shí)上,標(biāo)簽 是來自 XML 清單的方法不起作用。 因此,有必要向庫包中添加一個(gè)系統(tǒng)插件,該插件將使用 JLoader 類在 onAfterInitialize 事件(事件調(diào)度程序)上注冊命名空間。因此,有必要從庫和插件構(gòu)建一個(gè)包。 從 Joomla 4.2.7 開始,它已被修復(fù),您可以不使用該插件。
  • 到目前為止,更新庫=重新安裝。即刪除并安裝擴(kuò)展。這個(gè)決定是在 Joomla 3.x 版本的深處做出的。為什么? - 隱藏在公關(guān)山脈之下。我們需要尋找。為什么這很重要?因?yàn)榘惭b任何擴(kuò)展時(shí),都會在擴(kuò)展的“注冊表”中創(chuàng)建一個(gè)條目 - 在 #__extensions 表的數(shù)據(jù)庫中。該表有 2 列 TEXT 類型 - params 和 custom_data。你必須承認(rèn),這是一個(gè)相當(dāng)大的數(shù)據(jù)量。如果您使用 JoomlaCMSHelperLibraryHelper 將一些庫參數(shù)存儲在數(shù)據(jù)庫中,那么您需要考慮安裝程序的這種行為并預(yù)先保存,然后在更新庫時(shí)將保存的參數(shù)添加回?cái)U(kuò)展的安裝程序腳本中。
<?php
use Joomla\CMS\Helper\LibraryHelper;
use Joomla\CMS\Cache\Cache;

/**
 * Function called before extension installation/update/removal procedure commences.
 *
 * @param   string            $type     The type of change (install or discover_install, update, uninstall)
 * @param   InstallerAdapter  $adapter  The adapter calling this method
 *
 * @return  boolean  True on success
 *
 * @since   1.0.0
 */
public function preflight(string $type, InstallerAdapter $adapter): bool
{
    if ($type == 'uninstall')
    {
        return true;
    }

    /**
     *
     *  Joomla when updating extensions of the library type, it actually deletes them (along with the data in the database),
     *  and then installs it again.
     *  In order to avoid losing library data from the database, we are writing this crutch.
     *
     * @see https://github.com/joomla/joomla-cms/issues/39360
     *
     */

    if ($type == 'update')
    {
        $lib_params = LibraryHelper::getParams('Webtolk/Amocrm');
        $jconfig    = $this->app->getConfig();
        $options    = array(
            'defaultgroup' => 'wt_amo_crm_temp',
            'caching'      => true,
            'cachebase'    => $jconfig->get('cache_path'),
            'storage'      => $jconfig->get('cache_handler'),
        );
        $cache      = Cache::getInstance('', $options);
        $cache->store($lib_params, 'wt_amo_crm_temp');

    }

    return true;

}

相應(yīng)地,在 postflight() 方法中,我們使用 LibraryHelper::saveParams('Webtolk/Amocrm', $lib_params); 將保存的參數(shù)放回原處。

  • 要使庫正常工作,必須在擴(kuò)展管理器中啟用它(菜單 - 系統(tǒng) - 管理 - 擴(kuò)展)。
  • 通常,庫需要某些參數(shù)(API 密鑰、令牌等)才能工作,這些參數(shù)必須由 Joomla 管理區(qū)域的人員指定。出于這些目的,編寫一個(gè)插件很方便(擴(kuò)展類型庫沒有自己的參數(shù)配置接口)。系統(tǒng)組或您自己的自定義組并不重要。在你的庫中,你可以像這樣快速獲取插件參數(shù):
<?php
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\Registry\Registry;

if (PluginHelper::isEnabled('system', 'wt_amocrm'))
   {
      $plugin        = PluginHelper::getPlugin('system', 'wt_amocrm');
      $params        = \json_decode($plugin->params);
      $param = $params->param;
      // OR you can use Joomla\Registry\Registry
      $params = new Registry($plugin->params);
      $param = $params->get('param', 'defatul value if empty');
   }

Joomla 社區(qū)資源

  • https://joomla.org/
  • Mattermost 中的 Joomla 社區(qū)聊天
  • WebTolk Joomla 擴(kuò)展
  • 這篇俄語文章

以上是在 Joomla 中連接第三方 PHP 庫的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

PHP依賴注入容器:快速啟動 PHP依賴注入容器:快速啟動 May 13, 2025 am 12:11 AM

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增強(qiáng)codemodocultion,可驗(yàn)證性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

PHP性能優(yōu)化策略。 PHP性能優(yōu)化策略。 May 13, 2025 am 12:06 AM

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)啟用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替換loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

PHP電子郵件驗(yàn)證:確保正確發(fā)送電子郵件 PHP電子郵件驗(yàn)證:確保正確發(fā)送電子郵件 May 13, 2025 am 12:06 AM

phpemailvalidation invoLvesthreesteps:1)格式化進(jìn)行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)

PHP性能優(yōu)化:使用OpCode緩存 PHP性能優(yōu)化:使用OpCode緩存 May 07, 2025 pm 02:49 PM

opcodecachingsimplovesphperforvesphpermance bycachingCompiledCode,reducingServerLoadAndResponSetimes.1)itstorescompiledphpcodeinmemory,bypassingparsingparsingparsingandcompiling.2)useopcachebachebachebachebachebachebachebysettingparametersinphametersinphp.ini,likeememeryconmorysmorysmeryplement.33)

PHP中依賴注入的最佳實(shí)踐 PHP中依賴注入的最佳實(shí)踐 May 08, 2025 am 12:21 AM

使用依賴注入(DI)的原因是它促進(jìn)了代碼的松耦合、可測試性和可維護(hù)性。1)使用構(gòu)造函數(shù)注入依賴,2)避免使用服務(wù)定位器,3)利用依賴注入容器管理依賴,4)通過注入依賴提高測試性,5)避免過度注入依賴,6)考慮DI對性能的影響。

PHP中如何驗(yàn)證社保號字符串? PHP中如何驗(yàn)證社保號字符串? May 23, 2025 pm 08:21 PM

社保號驗(yàn)證在PHP中通過正則表達(dá)式和簡單邏輯實(shí)現(xiàn)。1)使用正則表達(dá)式清理輸入,去除非數(shù)字字符。2)檢查字符串長度是否為18位。3)計(jì)算并驗(yàn)證校驗(yàn)位,確保與輸入的最后一位匹配。

PHP依賴注入:提高代碼可檢驗(yàn)性 PHP依賴注入:提高代碼可檢驗(yàn)性 May 12, 2025 am 12:03 AM

依賴注入(DI)通過顯式傳遞依賴關(guān)系,顯著提升了PHP代碼的可測試性。 1)DI解耦類與具體實(shí)現(xiàn),使測試和維護(hù)更靈活。 2)三種類型中,構(gòu)造函數(shù)注入明確表達(dá)依賴,保持狀態(tài)一致。 3)使用DI容器管理復(fù)雜依賴,提升代碼質(zhì)量和開發(fā)效率。

PHP中的依賴注入與服務(wù)定位器 PHP中的依賴注入與服務(wù)定位器 May 13, 2025 am 12:10 AM

選擇DependencyInjection(DI)用于大型應(yīng)用,ServiceLocator適合小型項(xiàng)目或原型。1)DI通過構(gòu)造函數(shù)注入依賴,提高代碼的測試性和模塊化。2)ServiceLocator通過中心注冊獲取服務(wù),方便但可能導(dǎo)致代碼耦合度增加。

See all articles