Я устанавливаю REST API с Symfony 3 и FOSRestBundle.
В процессе обработки исключений Doctrine / database (например, элементов, не найденных для запроса GET / article / {id} для примераили нарушения ограничений), я наткнулся на пример, который читается следующим образом:
<?php
namespace AppBundle\Controller;
use AppBundle\Exception\ResourceValidationException;
// …
class ArticleController extends FOSRestController
{
/**
* @Rest\Post("/articles")
* @Rest\View(StatusCode = 201)
* @ParamConverter("article", converter="fos_rest.request_body")
*/
public function createAction(Article $article, ConstraintViolationList $violations)
{
if (count($violations)) {
$message = 'The JSON sent contains invalid data. Here are the errors you need to correct: ';
foreach ($violations as $violation) {
$message .= sprintf("Field %s: %s ", $violation->getPropertyPath(), $violation->getMessage());
}
throw new ResourceValidationException($message);
}
// …
}
}
Что мне не понятно, так это как автор узнает, что параметр ConstraintViolationList доступен в createAction ()?Какая магия связана с инъекциями $ article и $ нарушение?Я предполагаю, что вводится еще много параметров, как я могу сказать?