如今,几乎每个框架都内置了对Composer的内置支持,Composer是PHP中一个很棒的依赖管理工具,OpenCart也不例外。 在本教程中,您将学习如何使用Composer在OpenCart中集成外部库。
作曲家在OpenCart中的作用
自从OpenCart 2.2引入以来,就支持基于Composer的工作流程。 因此,继续获取最新版本的OpenCart; 在撰写本文时,它是2.3.0.2。 确保安装并配置已下载的最新版本,因为这将在本文后面提供。
探索目录结构,您会发现与早期版本的OpenCart相比存在某些差异。 在本文的上下文中,有趣的候选对象是composer.json文件和vendor目录。
让我们快速浏览一下composer.json文件。
{
"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"
}
}
尽管对Composer语法的讨论不在本文的讨论范围之内,但让我们快速浏览一下它以通俗易懂的方式讲的内容。
首先,OpenCart项目本身现在可以作为库使用,因此您可以使用Composer本身进行安装,而无需从站点手动下载。 此外,它还需要其他第三方库才能正常工作,例如divido,leafo等。当然,您不必担心它,因为在运行相关的Composer命令时它将自动处理。
当您安装新库时,相关条目将添加到composer.json文件中。 相关库文件位于同一级别的供应商目录下。 只需浏览该目录,您应该会看到已经安装了库!
供应商目录还包含由Composer本身生成的autoload.php ,可确保库已自动加载到OpenCart中,因此您可以立即使用它。 当然,在引导项目时,OpenCart包含autoload.php 。
因此,快速介绍了Composer与OpenCart一起工作的方式。 为了演示,我们将使用Composer安装流行的PHPMailer库。
使用Composer安装PHPMailer
PHPMailer是一个流行的PHP库,用于发送电子邮件。 我们将使用Composer将其安装在OpenCart中。 因此,请转到终端并更改目录,以使您与供应商目录和composer.json文件所在的级别相同。
现在,运行命令composer require phpmailer/phpmailer
并按Enter键! 假设一切正常,则应如下所示。
$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看看它是什么样子。
{
"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库,您已经对自己有所帮助,并且在本节中将见证这一点,我们将探索在代码中使用它的简单性。
出于示例目的,我们将构建一个非常简单的自定义控制器文件,您可以调用该文件来发送电子邮件。
打开您喜欢的文本编辑器,并在catalog/controller
目录下创建具有以下内容的example/email.php
。
<?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
方法中,您可以看到,如果不使用基于Composer的工作流,则实例化PHPMailer
对象时将不包含任何包含必需的PHPMailer类的include语句。 您做对了,它是由OpenCart本身自动加载的。 回想一下供应商目录中的autoload.php
可以autoload.php
所有魔力!
接下来是PHPMailer发送电子邮件所需的一些非常标准的内容。 当然,由于PHPMailer的讨论需要另外一篇文章,因此我尝试使该示例尽可能地简单!
因此,这是对如何将Composer与OpenCart结合使用以集成外部库的快速简单介绍。
结论
在本文中,我们仅介绍了OpenCart中基于Composer的工作流的表面,以便在您的项目中使用第三方库。 更不用说Composer是PHP中依赖管理工具的未来。 因此,尽一切努力总是一件好事,因为它已成为所有流行框架中的标准。
如有任何疑问和建议,我们将不胜感激!