Şu anda FlightPHP çerçevesiyle bir uygulama geliştiriyorum ve FlightPHP'yi özel sınıfıma nasıl enjekte edebileceğimi merak ediyorum, böylece bağımlılık kabına enjekte ettiğim belirli sınıfları kullanabiliyorum. Daha önce Uçuş bağımlılık kabın içine enjekte edilmiş günlük işlevini kullanmak mümkün olacak şekildeÇerçeve özel sınıflara nasıl enjekte edilir?
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;
});
benim veritabanı sınıfı yapıcı içine Flight enjekte çalışılıyor.
"Logger", "Flight::log()->function("test");
" Flight örneğinde kullanıldığında index.php dosyasında çalışır, ancak başka bir alanda (Veritabanı sınıfı içinde) kullanmayı denediğimde, kullanmama izin vermez "Uçuş" kapsamında.
Güncelleme: Doğru kullanım
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();
mi?
http://flightphp.com/learn Yani DB oluşturucu içinde enjekte/Flight örneğini almak mümkün olmadığını söylüyorsunuz? Bunların altında ne saklıyor? – chba
Özel sınıfımın (DB), Uçuş bağımlılığı kabına enjekte ettiğim diğer sınıfları kullanabilmesi için, Uçuşun DB yapıcısına nasıl iletileceğinden emin değilim. – mhvvzmak1