在我的路线 slim 中调用两个函数

Calling two functions in my route slim

我在调用路线中的两个独立函数时遇到问题。我正在使用 PSR-r 自动加载并创建了我自己的命名空间。 请参阅下面的代码,其中包含两个功能。

<?php

namespace App\Controllers;
use PHPMailer;

class Mailer {
  public function sendMail($request, $response)
  {
    echo "walking up the hill walking up the hill";
  }
  public function updateDB($request, $response) {
    echo "Sending message sending message";
  }
}

我有这两个功能,我想在我的路线中一个接一个地调用它们。我怎样才能做到这一点。

查看下面的路线,我将如何调用函数?

$app->post('/confirm', function($request, $response) {
          //sendMail
          //updateDB
})->setName('usersend');

我想先调用 sendmail 函数,然后在使用两个单独的函数后调用更新数据库,只是为了让我的代码更清晰。

您可以将 Mailer class 加载到 Slim's Dependency Container 然后将它们注入你的 routes/controllers。 首先将您的 Mailer class 添加到 Container

$container = $app->getContainer();
$container['Mailer'] = function ($container) {
    return new Mailer();
};

然后你可以像这样在你的路线中使用它:

$app->post('/confirm', function($request, $response) {
   $mailer = $this->get('Mailer');
   echo $mailer->sendMail();
   echo $mailer->updateDB();
})->setName('usersend');