public function setDriver($driver) { $instance = null; if ($driver && !is_object($driver) || is_callable($driver)) { $instance = new_instance($driver); } $this->setDriver($instance); }
/** * @param string $handle * @param mixed $driver * return LoggerDriverMap */ public function add(string $handle, $driver) { if (!$driver instanceof LoggerDriverMap) { $driver = new_instance($driver); } if (!$driver instanceof LoggerDriverMap) { throw new InvalidDriverException("Passed driver must resolve to `LoggerDriverMap` instance."); } $this->containerSet($handle, $driver); }
/** * @param $mixed * @return $mixed Returns an instance of $mixed */ function new_instance($mixed, ...$params) { if (is_callable($mixed)) { return new_instance($mixed(), ...$params); } if (is_array($mixed)) { return new_instance(implode("\\", $mixed), ...$params); } if (is_object($mixed)) { return new_instance(get_class($mixed), ...$params); } $mixed = (string) $mixed; return new $mixed(...$params); }