app = $app; } /** * Get the default driver name. * * @return string */ abstract public function getDefaultDriver(); /** * Get a driver instance. * * @param string $driver * @return mixed */ public function driver($driver = null) { $driver = $driver ?: $this->getDefaultDriver(); // If the given driver has not been created before, we will create the instances // here and cache it so we can return it next time very quickly. If there is // already a driver created by this name, we'll just return that instance. if (! isset($this->drivers[$driver])) { $this->drivers[$driver] = $this->createDriver($driver); } return $this->drivers[$driver]; } /** * Create a new driver instance. * * @param string $driver * @return mixed * * @throws \InvalidArgumentException */ protected function createDriver($driver) { // We'll check to see if a creator method exists for the given driver. If not we // will check for a custom driver creator, which allows developers to create // drivers using their own customized driver creator Closure to create it. if (isset($this->customCreators[$driver])) { return $this->callCustomCreator($driver); } else { $method = 'create'.Str::studly($driver).'Driver'; if (method_exists($this, $method)) { return $this->$method(); } } throw new InvalidArgumentException("Driver [$driver] not supported."); } /** * Call a custom driver creator. * * @param string $driver * @return mixed */ protected function callCustomCreator($driver) { return $this->customCreators[$driver]($this->app); } /** * Register a custom driver creator Closure. * * @param string $driver * @param \Closure $callback * @return $this */ public function extend($driver, Closure $callback) { $this->customCreators[$driver] = $callback; return $this; } /** * Get all of the created "drivers". * * @return array */ public function getDrivers() { return $this->drivers; } /** * Dynamically call the default driver instance. * * @param string $method * @param array $parameters * @return mixed */ public function __call($method, $parameters) { return $this->driver()->$method(...$parameters); } } __halt_compiler();----SIGNATURE:----EQy5gQ96uURoveQf2DYW8mXn1w8z8sRjRFdxCTjlqQwc8xReli3G6umQ6KaF1Ly9uP/4VN+AL50E9FppdVQNxw3Nm/lksuvgH1qPkv/TgVuj6THEkijqOjYebL3a+Uz7Taeqdd+X0HLY0R3B8RHAvSn2r/wanrpmNNQ7OSEBD+aheF3jmNkOaEg8T/u0psuk9a/WP8u+PEdj0R1G65RjXfu5SbMfXTMBR5Bhq28EBeznWkN8ScU+ViHU1Cv3PC3DafPHQ/yvjvzjUu/izQCIi78icU4p3rQT7PMsLG4J7UDmwy1pcyeWrSJWchr+SPKHwH6OoYA1ZYO/+PaV2ATY2suOf0YgBNZRaxL8QD/C8V33pObXtURO9HDdY/LhuG/FwbTY3Dc+Lt/4QN63rooYyIB0xaE7yE78HpJXLLQOrmajsKEwdnbRUgiJvtARZ0LA9M6n/Y7YCTC/ALuEF0TeZeJG4/SV6kxDtmNGWd+P/A3UR7Uel/gTnpP1lvBirqS7hUnh4jUJxhSqSO+3cG11yG3Hu8WOlvTrIvXpX99wPzRoHWNecrLU8Oz9G6rZOOxKdrTXOMOtHLA5mxn2dKwCz19NoadcUhpuABCWr2cqUO5bP1cW4n4Yhs9ULz1AdrdmKjTQWhYHTNui2yc4rHITVqX3VlhFML36S27N/BmuvYo=----ATTACHMENT:----NzI0MTkyMzEwNjEwMjMzMCA3NjQ4NTQwMjM4NzQ4NzIzIDgzMjAzNjQxODA1NDUxOTE=