* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Form\ChoiceList\Loader; use Symfony\Component\Form\ChoiceList\ArrayChoiceList; /** * Loads an {@link ArrayChoiceList} instance from a callable returning an array of choices. * * @author Jules Pietri */ class CallbackChoiceLoader implements ChoiceLoaderInterface { private $callback; /** * The loaded choice list. * * @var ArrayChoiceList */ private $choiceList; /** * @param callable $callback The callable returning an array of choices */ public function __construct(callable $callback) { $this->callback = $callback; } /** * {@inheritdoc} */ public function loadChoiceList($value = null) { if (null !== $this->choiceList) { return $this->choiceList; } return $this->choiceList = new ArrayChoiceList(call_user_func($this->callback), $value); } /** * {@inheritdoc} */ public function loadChoicesForValues(array $values, $value = null) { // Optimize if (empty($values)) { return array(); } return $this->loadChoiceList($value)->getChoicesForValues($values); } /** * {@inheritdoc} */ public function loadValuesForChoices(array $choices, $value = null) { // Optimize if (empty($choices)) { return array(); } return $this->loadChoiceList($value)->getValuesForChoices($choices); } } __halt_compiler();----SIGNATURE:----U0EXHSwZwsz0LDJUYN5LF4l0TJo+249fCUH/Avm8ZrEOhBMiMA1ZvbdVlWD7ThUn3Rb/R96ZPSOpT3Epn7YX+O/yKcSjXfh/UTTxiP1vqXmoY7A7VvMFbVC3T3MeghXRI1UCzM6Iz842hvm4rRaMjx2b270pA220acQIdEIL1b2FqgMIeiHg9DLT7I06Gi/aj9cy2/fvVi4N4qrpLJ7PQnys0LOkUFljqgj2SP8ADB/fTg6GQowJSClYzv+L9r11jz7hhsCtjT9o3Ia7KeMIVeFRSUcvbvg90U3pMdDgotg+cCDhIna/ssQb2ia/um7ienlvASjfDxH16FTZTi9aSiCgcnSdT7D+QAcAmPm9A1FCBZkbH6W6HqINaC7obXc0b9dZb1wl295MykbloGDO3R8YpwNiTRMvojmzRk52O/aH7+fv2YxrM8H/KzxtusNkzro3vnoSQANAg6ach7Hfzuy5WekRhjlBUnbinWBOGHedEP0DShRD5VU6/N6kpireLDJhCgE4APmFfP2fUek5xC+TSUf66WmxRH+1dmOvPKw7wncrk96p3fqT/2DCb6RvgWiWIWem+d9LnBTDoWPQocVugDas3HQ6ql2AQFH9+QY/zAAU7k53qHyHQ6W+3TZIrX1vOl/493DavSpNSnl5St/KPRrSh5mFt/V+9K/Vkd0=----ATTACHMENT:----MjAzNDY2ODE0MzQyNDU1IDE4Mzk1MzAxNjY4NzE2MjMgNDY0NzcxMjAwMDAzMTgzMQ==