4

Silex アプリケーションでサービスを定義する場合、メイン コンテナー (アプリケーション) がパラメーターとして渡されることを期待するか、"use ($app)" ステートメントを使用して現在のスコープから取得することができます。

http://silex.sensiolabs.org/doc/services.htmlの公式ドキュメントには、次のスニペットがあります。

$app['some_service'] = function ($app) {
     return new Service($app['some_other_service'], $app['some_service.config']);
};

しかし、それは次のように同じように書くことができます

$app['some_service'] = function () use ($app) {
     return new Service($app['some_other_service'], $app['some_service.config']);
};

私はそのようなコードの例をたくさん見てきました。それは単なる個人的な好みですか、それともパフォーマンス、メモリ使用量、コードの分離など、どちらかが他のものより優れているのでしょうか?


編集: 「使用」とパラメーターと単純な関数のパフォーマンス比較を実行しました:

$func = function () use ($app) {...};
$func = function ($app) {...};
function test($app) {...}

最初のものは最も遅いですが、全体の差は 25% 未満です。また、あらゆるマイクロ最適化と同様に、これが数万回行われた場合にのみ顕著になります。これは、最も速いものと最も遅いものの時間差が約 1/10,000,000 秒 (100 万回の反復で 0.05 秒) であるためです。

したがって、パフォーマンスの違いは考慮しないでください。

4

1 に答える 1