2017-06-15 12 views
-1

私のルートに2つの別々の機能を呼び出す際に問題が発生しています。私はPSR-rオートローディングを使用していて、自分の名前空間を作成しています。 以下の2つの機能を持つコードを参照してください。私のルートスリムで2つの機能を呼び出す

<?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"; 
    } 
} 

私はこれらの2つの機能を持っていて、私はそれらを次々にルートに呼びたいと思います。どうすればそれを達成できますか?

下記の私のルートを見て、どのように機能を呼び出すのですか?

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

コードをきれいに保つために、別々の2つの機能を使用した後、まずsendmail関数を呼び出してから、更新DBを呼び出したいとします。

答えて

1

MailerクラスをSlim's Dependency Container にロードし、ルート/コントローラに挿入することができます。 第一の容器

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

にごMailerクラスを追加して、あなたはそのようなあなたのルートでそれを使用することができます。

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