代码拉取完成,页面将自动刷新
<?php
namespace Sinta\Laravel\Addons;
use Illuminate\Config\Repository;
use Illuminate\Container\Container;
class AliasResolver
{
/**
* @var static
*/
protected static $instance;
/**
* @param string $apppath
* @param array $addons
* @param array $aliases
*/
public static function register($apppath, array $addons, array $aliases)
{
static::$instance = new static($apppath, $addons, $aliases);
spl_autoload_register([static::$instance, 'load'], true, false);
}
/**
*/
public static function unregister()
{
if (static::$instance) {
spl_autoload_unregister([static::$instance, 'load']);
}
}
/**
* @var array
*/
protected $addons;
/**
* @var array
*/
protected $globalClassAliases;
/**
* The constructor.
*
* @param string $apppath
* @param array $addons
* @param array $aliases
*/
public function __construct($apppath, array $addons, array $aliases)
{
$this->addons = array_merge([$this->makeAppAddon($apppath)], $addons);
$this->globalClassAliases = $aliases;
}
/**
* Make addon instance for application namespace.
*
* @param string $path
*
* @return static
*/
protected function makeAppAddon($path)
{
$config = [
'namespace' => trim($this->getAppNamespace(), '\\'),
];
return new Addon(null, 'app', $path, $config);
}
/**
* @param string $className
*
* @return bool
*/
public function load($className)
{
foreach ($this->addons as $addon) {
$namespace = $addon->phpNamespace();
if (empty($namespace)) {
continue;
}
$namespacePrefix = $namespace.'\\';
$includesGlobalAliases = $addon->config('addon.includes_global_aliases', true);
$addonAliases = $addon->config('addon.aliases', []);
if (!starts_with($className, $namespacePrefix)) {
continue;
}
$parts = explode('\\', $className);
$relativeClassName = $parts[count($parts) - 1];
if ($includesGlobalAliases) {
if (isset($this->globalClassAliases[$relativeClassName])) {
$originalClassName = $this->globalClassAliases[$relativeClassName];
class_alias($originalClassName, $className);
return true;
}
}
if ($addonAliases) {
if (isset($addonAliases[$relativeClassName])) {
$originalClassName = $addonAliases[$relativeClassName];
class_alias($originalClassName, $className);
return true;
}
}
}
return false;
}
/**
* Get the application namespace.
*
* @return string
*/
protected function getAppNamespace()
{
return Container::getInstance()->getNamespace();
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。