2016-05-03 6 views
2

私は経路からアクセスしたいが引数を渡すサービスを持っています。Slim DIサービスで引数を渡す

$container = new \Slim\Container();  
$container['myService'] = function($arg1, $arg2) { 
     //my code here 
}; 
$app = new \Slim\App($container); 

と私のルート内で、私はそうのようなサービスを呼び出そう:

$this->myService('my arg1', 'my arg2'); 

これが機能していません。引数を指定せずに呼び出すと、機能します。

引数を使用して呼び出す方法は?それとも、ルート内から呼び出される関数やメソッドを指定する別の方法ですか?

+0

Slim3。 GETルートの中から電話をかけようとしています – kko

+0

引数を取得するかどうかに依存してはいけませんか?ルート内(PUT、GET、など)からサービスに値を渡すことができるようにしたい場合は、 – kko

+0

を設定すると本当に役立ちます。スリムに新しい。 – kko

答えて

8

あなたはかなり近いです。

$container = new \Slim\Container();  
$container['myService'] = function ($c) { 
    return function($arg1, $arg2) { 
     //my code here 
    } 
}; 
$app = new \Slim\App($container); 

$app->get('/', function ($req, $res, $args) { 
    $this->myService($a, $b); 
}); 

これは動作するはずです。

オプションで、元のコードで...呼び出す前に変数に保存する必要があります。

$service = $this->myService; 
$service('my arg1', 'my arg2'); 

これらはどちらも有効です。

+0

ありがとう、グレッグ!これはまさに私が必要なものです! – kko

+1

この回答は正確ではありません。 '$ this-> myService($ a、$ b);'は、致命的なエラーを発生させる必要があります。 '未定義のメソッドSlim \ Container :: myService()'を呼び出します。上記の2番目の方法は期待通りに機能します。 – Nima