【问题标题】:Swiftmailer "Basic Usage" results in Uncaught ArgumentCountError: Too few argumentsSwiftmailer“基本用法”导致未捕获的 ArgumentCountError:参数太少
【发布时间】:2020-04-22 00:10:38
【问题描述】:

Swiftmailer introduction (2020-04-21) 提供如下说明:

$ composer require "swiftmailer/swiftmailer:^6.0"

然后像这样使用 Swiftmailer

require_once '/path/to/vendor/autoload.php';

// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.example.org', 25));

但是这会导致如下错误:

PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments to function Swift_Transport_EsmtpTransport::__construct(), 0 passed in /app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/SmtpTransport.php on line 35 and at least 3 expected in /app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php:54

系统

PHP 7.3.10

作曲家版本 1.9.1

Swiftmailer v6.2.3

【问题讨论】:

    标签: composer-php swiftmailer


    【解决方案1】:

    错误似乎来自 Composer 在 Swiftmailer 的自动加载器之前添加其自动加载器。 Swiftmailer 强调延迟加载其类,因为电子邮件通常只在站点的少数区域需要。

    Swift_SmtpTransport 被加载时,Composer 为 Swift 加载一个轻量级占位符(通过依赖注入似乎为Swift_SmtpTransport 提供了一个类),但 Swiftmail 的加载器没有机会为Swift_SmtpTransport 加载真正的类。

    一种解决方法是显式运行 Swiftmail 的自动加载器:

    require_once '/path/to/vendor/autoload.php';
    // a single autoload function call seems adequate
    // (but this isn't well tested.)
    Swift::autoload("Swift_SmtpTransport");
    
    
    // Create the Transport
    $transport = (new Swift_SmtpTransport('smtp.example.org', 25)) 
    // ... and so on
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 2018-10-11
      • 2018-04-16
      • 2018-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多