• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

使用Composer在OpenCart中集成外部库

现在几乎每个框架都内置了对 Composer 的支持,这是一个很棒的 php 依赖管理工具,opencart 也不例外。在本教程中,您将学习如何使用 Composer 将外部库集成到 OpenCart 中。

Composer 在 OpenCart 中的作用

自 OpenCart 2.2 引入以来,支持基于 Composer 的工作流。因此,继续获取最新版本的 OpenCart;在撰写本文时,它是 2.3.0.2。确保安装和配置已下载的最新版本,因为这将在本文后面使用。

探索目录结构,您会发现与早期版本的 OpenCart 相比存在某些差异。在本文的上下文中,有趣的候选者是 composer.json文件和 供应商目录。 

让我们快速浏览一下composer.json文件。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
{
    "name": "opencart/opencart",
    "type": "project",
    "description": "OpenCart",
    "keywords": ["opencart", "ecommerce", "framework", "opensource"],
    "homepage": "https://www.opencart.com",
    "license": "GPL-3.0+",
    "require": {
        "cardinity/cardinity-sdk-php": "^1.0",
        "braintree/braintree_php" : "3.2.0",
        "leafo/scssphp": "0.0.12",
        "divido/divido-php": ">=1.1.1",
        "klarna/kco_rest": "^2.2",
        "php": ">=5.4.0"
    }
}

尽管对 Composer 语法的讨论超出了本文的范围,但让我们快速了解一下它通俗地说的内容。

首先,OpenCart 项目本身现在作为一个库提供,因此您可以使用 Composer 本身安装它,而无需从站点手动下载。此外,它还需要其他第三方库才能正常工作,如 divido、leafo 等。当然,您不必担心,因为它会在您运行相关 Composer 命令时自动处理。

安装新库时,相关条目将添加到 composer.json文件中。相关的库文件放在 同级的vendor目录下。只需浏览该目录,您应该会看到这些库已经安装!

vendor目录还包含由 Composer 自己生成的autoload.php,它确保库在 OpenCart 中自动加载,因此您可以立即使用它。当然,OpenCart在引导项目时包含autoload.php 。

以上就是 Composer 如何与 OpenCart 一起工作的快速介绍。出于演示目的,我们将使用 Composer 安装流行的 PHPMailer 库。

使用 Composer 安装 PHPMailer

PHPMailer 是一个流行的 PHP 库,用于发送电子邮件。我们将使用 Composer 将它安装在 OpenCart 中。因此,转到您的终端并更改目录,以便您处于 供应商目录和composer.json文件所在的同一级别。

现在,运行命令composer require phpmailer/phpmailer并按回车!假设一切顺利,它应该如下所示。

01
02
03
04
05
06
07
08
09
10
11
12
$composer require phpmailer/phpmailer
Using version ^5.2 for phpmailer/phpmailer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing phpmailer/phpmailer (v5.2.16)
    Downloading: 100%        
  
phpmailer/phpmailer suggests installing league/oauth2-google (Needed for Google Xoauth2 authentication)
Writing lock file
Generating autoload files

就是这样了!PHPMailer 下载安装成功,这就是 Composer 的魅力所在!通过查看供应商目录来验证这一点 ,您会发现它安装在 phpmailer/phpmailer目录中。

另外,让我们打开composer.json看看它是什么样子的。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
{
    "name": "opencart/opencart",
    "type": "project",
    "description": "OpenCart",
    "keywords": ["opencart", "ecommerce", "framework", "opensource"],
    "homepage": "http://www.opencart.com",
    "license": "GPL-3.0+",
    "require": {
        "cardinity/cardinity-sdk-php": "^1.0",
        "braintree/braintree_php" : "3.2.0",
        "leafo/scssphp": "0.0.12",
        "divido/divido-php": ">=1.1.1",
        "klarna/kco_rest": "^2.2",
        "php": ">=5.4.0",
        "phpmailer/phpmailer": "^5.2"
    }
}

如您所见,该条目"phpmailer/phpmailer": "^5.2"已添加到该require部分中。所以这意味着你的项目需要 PHPMailer 才能正常工作。

假设您正在与其他开发人员一起工作,并且需要定期分享您的工作。在这种情况下,您只需要与他们共享您的composer.json文件,其余的将由 Composer 自己处理!他们只需要运行 composer update命令,这应该负责在他们的副本中安装所需的依赖项!

现在,我们已经使用 Composer 安装了 PHPMailer,但是如何使用它呢?别担心,我不会那么快离开你——这正是我们下一节的秘诀!

如何使用 PHPMailer 库?

您已经通过使用 Composer 安装 PHPMailer 库帮了自己一个忙,您将在本节中见证它,因为我们将探索在代码中使用它的简单程度。

例如,我们将构建一个非常简单的自定义控制器文件,您可以调用它来发送电子邮件。

打开您喜欢的文本编辑器并在包含以下内容example/email.php的目录下 创建。catalog/controller

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
class ControllerExampleEmail extends Controller {
    public function index() {
    // just instantiate the mailer object, no need to include anything to use it.
    $objPhpMailer = new PHPMailer();
 
 
    $objPhpMailer->From = "sender@example.com";
    $objPhpMailer->FromName = "Sajal Soni";
    $objPhpMailer->AddAddress("receiver@example.com");
 
 
    $objPhpMailer->WordWrap = 50;
    $objPhpMailer->Ishtml(true);
 
 
    $objPhpMailer->Subject = "Subject";
    $objPhpMailer->Body    = "<h2>HTML Body</h2>";
    $objPhpMailer->AltBody = "Plain Body";
 
 
    if(!$objPhpMailer->Send())
    {
       echo "Message could not be sent. <p>";
       echo "Mailer Error: " . $objPhpMailer->ErrorInfo;
       exit;
    }
 
 
    echo "Message has been sent";
    exit;
    }
}

您可以通过http://your-opencart-site-url/index.php?route=example/email访问您的网站来测试它。

在该index方法中,您可以看到我们在 PHPMailer没有任何包含语句的情况下实例化了对象,如果我们不使用基于 Composer 的工作流,这些语句将包含所需的 PHPMailer 类。你没看错,它是由 OpenCart 自己自动加载的。回想一下,autoload.php在 供应商目录中完成了所有的魔法!

接下来是 PHPMailer 发送电子邮件所需的一些非常标准的东西。当然,我尽量保持示例尽可能简单,因为 PHPMailer 的讨论需要单独的文章!

因此,这是对如何使用 Composer 和 OpenCart 来集成外部库的快速而简单的介绍。

结论

在本文中,我们刚刚介绍了 OpenCart 中基于 Composer 的工作流程的表面,以便在您的项目中使用第三方库。更不用说 Composer 是 PHP 中依赖管理工具的未来。因此,随着它成为所有流行框架的标准,弄脏你的手总是好的。


文章目录
  • Composer 在 OpenCart 中的作用
  • 使用 Composer 安装 PHPMailer
  • 如何使用 PHPMailer 库?
  • 结论