Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\FormBundle\Collector; | |
use Mautic\FormBundle\Collection\FieldCollection; | |
use Mautic\FormBundle\Event\FieldCollectEvent; | |
use Mautic\FormBundle\FormEvents; | |
use Symfony\Component\EventDispatcher\EventDispatcherInterface; | |
final class FieldCollector implements FieldCollectorInterface | |
{ | |
/** | |
* @var FieldCollection[] | |
*/ | |
private array $fieldCollections = []; | |
public function __construct( | |
private EventDispatcherInterface $dispatcher | |
) { | |
} | |
public function getFields(string $object): FieldCollection | |
{ | |
if (!isset($this->fieldCollections[$object])) { | |
$this->collect($object); | |
} | |
return $this->fieldCollections[$object]; | |
} | |
private function collect(string $object): void | |
{ | |
$event = new FieldCollectEvent($object); | |
$this->dispatcher->dispatch($event, FormEvents::ON_FIELD_COLLECT); | |
$this->fieldCollections[$object] = $event->getFields(); | |
} | |
} | |