diff --git a/Service/CustomFieldProvider.php b/Service/CustomFieldProvider.php index d137da295..d2871560e 100644 --- a/Service/CustomFieldProvider.php +++ b/Service/CustomFieldProvider.php @@ -26,28 +26,46 @@ use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** - * Receive all service tagged with 'chill.custom_field' - * + * Receive all the services tagged with 'chill.custom_field'. + * + * The services tagged with 'chill.custom_field' are services used to declare + * a new custom field type. The tag must contain a 'type' variable (that must + * be unique), this type is used to identify this custom field in the form + * declration + * + * For example (in services.yml) : + * services: + * chill.icp2.type: + * tags: + * - { name: 'chill.custom_field', type: 'ICPC2' } + * * @author Julien Fastré */ class CustomFieldProvider implements ContainerAwareInterface { + /** @var array $servicesByType The services indexes by the type */ private $servicesByType = array(); - /** - * - * @var \Symfony\Component\DependencyInjection\ContainerInterface - */ + /** @var Container $container The container */ private $container; + /** + * Add a new custom field to the provider + * + * @param type $serviceName The name of the service (declared in service.yml) + * @param type $type The type of the service (that is used in the form to + * add this type) + */ public function addCustomField($serviceName, $type) { $this->servicesByType[$type] = $serviceName; } /** + * Get a custom field stored in the provider. The custom field is identified + * by its type. * - * @param string $type + * @param string $type The type of the wanted service * @return CustomFieldInterface */ public function getCustomFieldByType($type) @@ -56,10 +74,14 @@ class CustomFieldProvider implements ContainerAwareInterface return $this->servicesByType[$type]; } else { throw new \LogicException('the custom field with type '.$type.' ' - . 'is not found'); + . 'is not found'); } } + /* + * (non-PHPdoc) + * @see \Symfony\Component\DependencyInjection\ContainerAwareInterface::setContainer() + */ public function setContainer(ContainerInterface $container = null) { if ($container === null) { @@ -69,9 +91,13 @@ class CustomFieldProvider implements ContainerAwareInterface $this->container = $container; } + /** + * Get all the custom fields known by the provider + * + * @return array Array of the known custom fields indexed by the type. + */ public function getAllFields() { return $this->servicesByType; } - }