PHP/silexを初めて使用しています。silexコントローラセッター注入
問題:コントローラに依存関係を注入できません。
コントローラー:
class MediaController implements ControllerProviderInterface
{
private $serviceManager;
public function setService($service)
{
$this->serviceManager = $service;
}
public function getMedia($id)
{
$this->serviceManager->getMediaService()->getMedia($id);
}
public function connect(Application $app)
{
$controllers = $app['controllers_factory'];
$controllers->get('/id={id}', 'Controllers\Instagram\MediaController::getMedia');
$controllers->get('/test', 'Controllers\Instagram\MediaController::test');
return $controllers;
}
}
注射コンフィグファイルroutes.phpの(このファイルものindex.phpから呼び出され、またapp.phpから呼び出されるconfig.phpファイルから呼び出される):
function getMediaController($app) {
$mediaController = new \Controllers\Instagram\MediaController();
$mediaController->setService(new \Service\InstagramServiceManager());
return $mediaController;
}
$app->mount('/media', getMediaController($app));
スタートのサーバで構築PHP:PHPはlocalhostと-S:テストに8080 /ウェブ
パス:/メディア/ ID = 1
エラー:PHP致命的なエラーは:行に/home/fernando/projects/php/silex/api_media_location_v2/src/controllers/instagram/MediaController.php非オブジェクトにメンバ関数getMediaService()の呼び出し41
MediaController.phpからライン41:
$this->serviceManager->getMediaService()->getMedia($id);
コントローラにサービスを注入する方法上の任意の提案?解決
あなたはhttp://silex.sensiolabs.org/doc/master/services.htmlを読んでいますか? – fucethebads
はい、私もこれを試しました: '$ mediaController-> setService($ app [' instagram_service_manager ']);'しかし結果は同じです –