����JFIF��x�x����'
Server IP : 66.29.137.217 / Your IP : 3.128.205.62 Web Server : LiteSpeed System : Linux premium294.web-hosting.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : gltevjme ( 1095) PHP Version : 7.0.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/gltevjme/cbt.bofirm.com/vendor/graham-campbell/manager/src/ |
Upload File : |
<?php declare(strict_types=1); /* * This file is part of Laravel Manager. * * (c) Graham Campbell <graham@alt-three.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace GrahamCampbell\Manager; use Closure; use Illuminate\Contracts\Config\Repository; use Illuminate\Support\Arr; use InvalidArgumentException; /** * This is the abstract manager class. * * @author Graham Campbell <graham@alt-three.com> */ abstract class AbstractManager implements ManagerInterface { /** * The config instance. * * @var \Illuminate\Contracts\Config\Repository */ protected $config; /** * The active connection instances. * * @var array<string,object> */ protected $connections = []; /** * The custom connection resolvers. * * @var array<string,callable> */ protected $extensions = []; /** * Create a new manager instance. * * @param \Illuminate\Contracts\Config\Repository $config * * @return void */ public function __construct(Repository $config) { $this->config = $config; } /** * Get a connection instance. * * @param string|null $name * * @throws \InvalidArgumentException * * @return object */ public function connection(string $name = null) { $name = $name ?: $this->getDefaultConnection(); if (!isset($this->connections[$name])) { $this->connections[$name] = $this->makeConnection($name); } return $this->connections[$name]; } /** * Reconnect to the given connection. * * @param string|null $name * * @throws \InvalidArgumentException * * @return object */ public function reconnect(string $name = null) { $name = $name ?: $this->getDefaultConnection(); $this->disconnect($name); return $this->connection($name); } /** * Disconnect from the given connection. * * @param string|null $name * * @return void */ public function disconnect(string $name = null) { $name = $name ?: $this->getDefaultConnection(); unset($this->connections[$name]); } /** * Create the connection instance. * * @param array $config * * @throws \InvalidArgumentException * * @return object */ abstract protected function createConnection(array $config); /** * Make the connection instance. * * @param string $name * * @throws \InvalidArgumentException * * @return object */ protected function makeConnection(string $name) { $config = $this->getConnectionConfig($name); if (isset($this->extensions[$name])) { return $this->extensions[$name]($config); } if ($driver = Arr::get($config, 'driver')) { if (isset($this->extensions[$driver])) { return $this->extensions[$driver]($config); } } return $this->createConnection($config); } /** * Get the configuration name. * * @return string */ abstract protected function getConfigName(); /** * Get the configuration for a connection. * * @param string|null $name * * @throws \InvalidArgumentException * * @return array */ public function getConnectionConfig(string $name = null) { $name = $name ?: $this->getDefaultConnection(); return $this->getNamedConfig('connections', 'Connection', $name); } /** * Get the given named configuration. * * @param string $type * @param string $desc * @param string $name * * @throws \InvalidArgumentException * * @return array */ protected function getNamedConfig(string $type, string $desc, string $name) { $data = $this->config->get($this->getConfigName().'.'.$type); if (!is_array($config = Arr::get($data, $name)) && !$config) { throw new InvalidArgumentException("$desc [$name] not configured."); } $config['name'] = $name; return $config; } /** * Get the default connection name. * * @return string */ public function getDefaultConnection() { return $this->config->get($this->getConfigName().'.default'); } /** * Set the default connection name. * * @param string $name * * @return void */ public function setDefaultConnection(string $name) { $this->config->set($this->getConfigName().'.default', $name); } /** * Register an extension connection resolver. * * @param string $name * @param callable $resolver * * @return void */ public function extend(string $name, callable $resolver) { if ($resolver instanceof Closure) { $this->extensions[$name] = $resolver->bindTo($this, $this); } else { $this->extensions[$name] = $resolver; } } /** * Return all of the created connections. * * @return array<string,object> */ public function getConnections() { return $this->connections; } /** * Get the config instance. * * @return \Illuminate\Contracts\Config\Repository */ public function getConfig() { return $this->config; } /** * Dynamically pass methods to the default connection. * * @param string $method * @param array $parameters * * @return mixed */ public function __call(string $method, array $parameters) { return $this->connection()->$method(...$parameters); } }