![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/vendor/doctrine/data-fixtures/src/Executor/ |
<?php declare(strict_types=1); namespace Doctrine\Common\DataFixtures\Executor; use Doctrine\Common\DataFixtures\FixtureInterface; use Doctrine\Common\DataFixtures\OrderedFixtureInterface; use Doctrine\Common\DataFixtures\Purger\PurgerInterface; use Doctrine\Common\DataFixtures\ReferenceRepository; use Doctrine\Common\DataFixtures\SharedFixtureInterface; use Doctrine\Persistence\ObjectManager; use Exception; use function get_class; use function sprintf; /** * Abstract fixture executor. */ abstract class AbstractExecutor { /** * Purger instance for purging database before loading data fixtures * * @var PurgerInterface */ protected $purger; /** * Logger callback for logging messages when loading data fixtures * * @var callable */ protected $logger; /** * Fixture reference repository * * @var ReferenceRepository */ protected $referenceRepository; public function __construct(ObjectManager $manager) { $this->referenceRepository = new ReferenceRepository($manager); } /** @return ReferenceRepository */ public function getReferenceRepository() { return $this->referenceRepository; } public function setReferenceRepository(ReferenceRepository $referenceRepository) { $this->referenceRepository = $referenceRepository; } /** * Sets the Purger instance to use for this executor instance. * * @return void */ public function setPurger(PurgerInterface $purger) { $this->purger = $purger; } /** @return PurgerInterface */ public function getPurger() { return $this->purger; } /** * Set the logger callable to execute with the log() method. * * @param callable $logger * * @return void */ public function setLogger($logger) { $this->logger = $logger; } /** * Logs a message using the logger. * * @param string $message * * @return void */ public function log($message) { $logger = $this->logger; $logger($message); } /** * Load a fixture with the given persistence manager. * * @return void */ public function load(ObjectManager $manager, FixtureInterface $fixture) { if ($this->logger) { $prefix = ''; if ($fixture instanceof OrderedFixtureInterface) { $prefix = sprintf('[%d] ', $fixture->getOrder()); } $this->log('loading ' . $prefix . get_class($fixture)); } // additionally pass the instance of reference repository to shared fixtures if ($fixture instanceof SharedFixtureInterface) { $fixture->setReferenceRepository($this->referenceRepository); } $fixture->load($manager); $manager->clear(); } /** * Purges the database before loading. * * @return void * * @throws Exception if the purger is not defined. */ public function purge() { if ($this->purger === null) { throw new Exception( PurgerInterface::class . ' instance is required if you want to purge the database before loading your data fixtures.', ); } if ($this->logger) { $this->log('purging database'); } $this->purger->purge(); } /** * Executes the given array of data fixtures. * * @param FixtureInterface[] $fixtures Array of fixtures to execute. * @param bool $append Whether to append the data fixtures or purge the database before loading. * * @return void */ abstract public function execute(array $fixtures, bool $append = false); }