Ai
1 Star 0 Fork 0

sintall.com/laravel-addons

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
ClassLoader.php 1.46 KB
一键复制 编辑 原始数据 按行查看 历史
sintall.com 提交于 2017-12-09 14:14 +08:00 . dd
<?php
namespace Sinta\Laravel\Addons;
use Sinta\Laravel\Addons\Environment as AddonEnvironment;
class ClassLoader
{
protected $env;
protected $addons;
protected static $instance;
public static function register(AddonEnvironment $env, $addons)
{
static::$instance = new static($env, $addons);
spl_autoload_register([static::$instance, 'load'], true, false);
}
public static function unregister()
{
if (static::$instance) {
spl_autoload_unregister([static::$instance, 'load']);
}
}
public function __construct(AddonEnvironment $env, array $addons)
{
$this->env = $env;
$this->addons = $addons;
}
public function load($className)
{
foreach ($this->addons as $addon) {
$namespace = $addon->phpNamespace();
$namespacePrefix = $namespace ? $namespace.'\\' : '';
if (!starts_with($className, $namespacePrefix)) {
continue;
}
$relativeClassName = substr($className, strlen($namespacePrefix));
$relativePath = $this->env->classToPath($relativeClassName);
foreach ($addon->config('addon.directories') as $directory) {
$path = $addon->path($directory.'/'.$relativePath);
if (file_exists($path)) {
require_once $path;
return true;
}
}
}
return false;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/limary_admin/laravel-extension.git
git@gitee.com:limary_admin/laravel-extension.git
limary_admin
laravel-extension
laravel-addons
master

搜索帮助