0
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를 시작
: 시험 8080/웹
경로 : PHP는 로컬 호스트를 -S/미디어/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 ']);' 그러나 결과는 같다. –