在我的路线中调用两个功能苗条

时间:2017-06-15 20:55:49

标签: php routes 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函数,然后使用两个单独的函数调用更新数据库,以保持代码清洁。

1 个答案:

答案 0 :(得分:1)

您可以将Mailer课程加载到Slim's Dependency Container 然后将它们注入您的路由/控制器。 首先将您的Mailer类添加到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');