2017-06-15 3 views
-1

Ich habe ein Problem beim Aufruf von zwei separaten Funktionen in meiner Route. Ich benutze PSR-r Autoloading und erstellt meinen eigenen Namensraum. Siehe Code unten mit zwei Funktionen.Aufruf von zwei Funktionen in meiner Route slim

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

Ich habe diese beiden Funktionen und möchte sie auf meiner Route nacheinander aufrufen. Wie kann ich das erreichen?

Siehe meine Route unten, wie würde ich die Funktionen nennen?

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

Ich möchte zunächst die Sendmail-Funktion aufrufen und dann das Update DB nach nur zwei getrennte Funktionen mit meinem Code sauberer zu halten.

Antwort

1

Sie können Ihre Mailer Klasse in Slim's Dependency Container laden und dann in Ihre Routen/Controller injizieren. zuerst Ihre Mailer Klasse zum

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

Und dann können Sie es in Ihre Routen wie das verwenden:

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