PHP 库很方便,因为可以从应用程序中的任何位置访问它们:从插件、组件模型、模块等。如果有人已经解决了类似的问题并将其设计为库(甚至更新了它),将这个库连接到您的 Joomla 是有意义的。例如,要为在线商店开发支付方式,您需要支付聚合器的官方库。或者您对某些CRM官方的PHP SDK是否满意。
作曲家
Joomla 不支持直接使用 Composer。为了在工作中使用该库,您需要将其“包装”在 Joomla 扩展类型库中并安装它。在严肃的项目中,采用修复项目所有组件版本的方法:代码经过多次检查、测试并允许在生产中工作。
您使用您的库创建一个包,将其安装在您需要的任何地方。随着库的新版本发布,您可以更新包装器并获得使用 Joomla 扩展的所有优势:以标准方式更新扩展,包括通过 CLI。在更新等之前,请在管理区域中查看扩展程序的变更日志
更新到 Joomla 5 之前,请在管理区域中查看变更日志扩展。
Joomla、PSR、Symfony
Joomla 符合 PSR 标准,因此在这方面使用它很方便。 Joomla 核心中包含一些 Symfony 软件包(控制台、字符串、vardumper、yaml、错误处理程序等),因此如果您突然想要添加更多软件包,它们将适合并运行良好。除了库/供应商中的 Symfony 组件之外,您还可以看到 Joomla 中还有哪些有价值的内容。
如何将第 3 方 PHP 库包装在 Joomla 扩展中?
没什么复杂的。库文件通常位于 src 文件夹中。在此文件夹旁边,您需要根据文档 (manual.joomla.org) 创建 Joomla 扩展的 XML 清单。然后我们将所有内容打包到 zip 存档中,就是这样!可以安装了。
如果您需要在数据库中拥有自己的表才能使库正常工作,则需要在安装或更新过程中使用 SQL 查询添加必要的文件。由于 Joomla 4 使用名称空间,因此在扩展的 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>
;标签意味着我们存档中的 src 文件夹将被复制到 JPATH_SITE/libraries/Webtolk/Amocrm。在中部分,我们指出需要从档案中填写的内容。和
重要注意事项!
-
在 Joomla 4.2.7 之前,事实上,标签
是来自 XML 清单的方法不起作用。 因此,有必要向库包中添加一个系统插件,该插件将使用 JLoader 类在 onAfterInitialize 事件(事件调度程序)上注册命名空间。因此,有必要从库和插件构建一个包。 从 Joomla 4.2.7 开始,它已被修复,您可以不使用该插件。 - 到目前为止,更新库=重新安装。即删除并安装扩展。这个决定是在 Joomla 3.x 版本的深处做出的。为什么? - 隐藏在公关山脉之下。我们需要寻找。为什么这很重要?因为安装任何扩展时,都会在扩展的“注册表”中创建一个条目 - 在 #__extensions 表的数据库中。该表有 2 列 TEXT 类型 - params 和 custom_data。你必须承认,这是一个相当大的数据量。如果您使用 JoomlaCMSHelperLibraryHelper 将一些库参数存储在数据库中,那么您需要考虑安装程序的这种行为并预先保存,然后在更新库时将保存的参数添加回扩展的安装程序脚本中。
<?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; }
相应地,在 postflight() 方法中,我们使用 LibraryHelper::saveParams('Webtolk/Amocrm', $lib_params); 将保存的参数放回原处。
- 要使库正常工作,必须在扩展管理器中启用它(菜单 - 系统 - 管理 - 扩展)。
- 通常,库需要某些参数(API 密钥、令牌等)才能工作,这些参数必须由 Joomla 管理区域的人员指定。出于这些目的,编写一个插件很方便(扩展类型库没有自己的参数配置接口)。系统组或您自己的自定义组并不重要。在你的库中,你可以像这样快速获取插件参数:
<?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 社区资源
- https://joomla.org/
- Mattermost 中的 Joomla 社区聊天
- WebTolk Joomla 扩展
- 这篇俄语文章
以上是在 Joomla 中连接第三方 PHP 库的详细内容。更多信息请关注PHP中文网其他相关文章!

PHP在现代Web开发中仍然重要,尤其在内容管理和电子商务平台。1)PHP拥有丰富的生态系统和强大框架支持,如Laravel和Symfony。2)性能优化可通过OPcache和Nginx实现。3)PHP8.0引入JIT编译器,提升性能。4)云原生应用通过Docker和Kubernetes部署,提高灵活性和可扩展性。

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP成为许多网站首选技术栈的原因包括其易用性、强大社区支持和广泛应用。1)易于学习和使用,适合初学者。2)拥有庞大的开发者社区,资源丰富。3)广泛应用于WordPress、Drupal等平台。4)与Web服务器紧密集成,简化开发部署。

PHP在现代编程中仍然是一个强大且广泛使用的工具,尤其在web开发领域。1)PHP易用且与数据库集成无缝,是许多开发者的首选。2)它支持动态内容生成和面向对象编程,适合快速创建和维护网站。3)PHP的性能可以通过缓存和优化数据库查询来提升,其广泛的社区和丰富生态系统使其在当今技术栈中仍具重要地位。

在PHP中,弱引用是通过WeakReference类实现的,不会阻止垃圾回收器回收对象。弱引用适用于缓存系统和事件监听器等场景,需注意其不能保证对象存活,且垃圾回收可能延迟。

\_\_invoke方法允许对象像函数一样被调用。1.定义\_\_invoke方法使对象可被调用。2.使用$obj(...)语法时,PHP会执行\_\_invoke方法。3.适用于日志记录和计算器等场景,提高代码灵活性和可读性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver CS6
视觉化网页开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),