123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- <?php
-
- namespace Illuminate\Database;
-
- use Illuminate\Support\Arr;
- use InvalidArgumentException;
- use Illuminate\Console\Command;
- use Illuminate\Container\Container;
-
- abstract class Seeder
- {
- /**
- * The container instance.
- *
- * @var \Illuminate\Container\Container
- */
- protected $container;
-
- /**
- * The console command instance.
- *
- * @var \Illuminate\Console\Command
- */
- protected $command;
-
- /**
- * Seed the given connection from the given path.
- *
- * @param array|string $class
- * @param bool $silent
- * @return $this
- */
- public function call($class, $silent = false)
- {
- $classes = Arr::wrap($class);
-
- foreach ($classes as $class) {
- if ($silent === false && isset($this->command)) {
- $this->command->getOutput()->writeln("<info>Seeding:</info> $class");
- }
-
- $this->resolve($class)->__invoke();
- }
-
- return $this;
- }
-
- /**
- * Silently seed the given connection from the given path.
- *
- * @param array|string $class
- * @return void
- */
- public function callSilent($class)
- {
- $this->call($class, true);
- }
-
- /**
- * Resolve an instance of the given seeder class.
- *
- * @param string $class
- * @return \Illuminate\Database\Seeder
- */
- protected function resolve($class)
- {
- if (isset($this->container)) {
- $instance = $this->container->make($class);
-
- $instance->setContainer($this->container);
- } else {
- $instance = new $class;
- }
-
- if (isset($this->command)) {
- $instance->setCommand($this->command);
- }
-
- return $instance;
- }
-
- /**
- * Set the IoC container instance.
- *
- * @param \Illuminate\Container\Container $container
- * @return $this
- */
- public function setContainer(Container $container)
- {
- $this->container = $container;
-
- return $this;
- }
-
- /**
- * Set the console command instance.
- *
- * @param \Illuminate\Console\Command $command
- * @return $this
- */
- public function setCommand(Command $command)
- {
- $this->command = $command;
-
- return $this;
- }
-
- /**
- * Run the database seeds.
- *
- * @return void
- *
- * @throws \InvalidArgumentException
- */
- public function __invoke()
- {
- if (! method_exists($this, 'run')) {
- throw new InvalidArgumentException('Method [run] missing from '.get_class($this));
- }
-
- return isset($this->container)
- ? $this->container->call([$this, 'run'])
- : $this->run();
- }
- }
|