私はFlightPHPフレームワークを使ってアプリケーションを開発しています。私は自分のカスタムクラスにFlightPHPを注入して、自分が依存性コンテナに注入した特定のクラスを使用できるようにする方法が不思議です。フレームワークをカスタムクラスに挿入するには?
use Flight;
use Logger;
class DB{
public function __construct(...){
$this->app = $app; // Flight:: instance
}
public function doStuff($stuff){
return $this->app->log()->function($stuff);
}
}
Flight::register('log', 'Logger', ['app'], function($log) {
return $log->pushHandler(new StreamHandler('app.log'));
});
Flight::register('database', 'DB', array($data), function($db) {
return $db;
});
私は以前フライト依存容器に注入したログ機能を使用することができていますように、私のデータベースクラスのコンストラクタにフライトを注入しようとしています。
"Logger"はFlightインスタンス "Flight::log()->function("test");
"で使用するとindex.phpで動作しますが、別のスコープ(データベースクラス内)で使用しようとすると使用できません「フライト」の文脈で
更新:
Flight::register('log', 'Monolog\Logger', ['app'], function($log) {
return $log->pushHandler(new StreamHandler('app.log'));
});
class DB{
function __construct(Monolog\Logger $engine){
#var_dump($engine);
$engine->addInfo("injected"); // works
}
}
Flight::register('database', 'DB', array(Flight::log()), function($db) {
return $db;
});
Flight::database();
が正しい使い方ですか?
だからあなたはあなたがDBのコンストラクタでフライトのインスタンスを注入/受信できないことを言っていますか?それらの下に何が隠れていますか? – chba
FlightをDBコンストラクタに渡す方法がわかりません。そのため、私のカスタムクラス(DB)がFlightの依存関係コンテナに注入した他のクラスを利用できるようになります。 – mhvvzmak1