* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\PrestashopCheckout\Presenter\Store; use PrestaShop\Module\PrestashopCheckout\Presenter\PresenterInterface; /** * Present the store to the vuejs app (vuex) */ class StorePresenter implements PresenterInterface { /** * @var PresenterInterface[] */ private $presenters; /** * @var array */ private $store; /** * @param PresenterInterface[] $presenters * @param array $store */ public function __construct($presenters, array $store = []) { // Allow to set a custom store for tests purpose if (null !== $store) { $this->store = $store; } $this->presenters = $presenters; } /** * Build the store required by vuex * * @return array */ public function present() { if ([] !== $this->store) { return $this->store; } foreach ($this->presenters as $presenter) { if ($presenter instanceof PresenterInterface) { $this->store = array_merge($this->store, $presenter->present()); } } return $this->store; } }