从 Blade 中的别名类获取完全限定的类名

Posted

技术标签:

【中文标题】从 Blade 中的别名类获取完全限定的类名【英文标题】:Getting fully qualified class name from aliased class in Blade 【发布时间】:2021-11-30 15:42:46 【问题描述】:

我在我的 Laravel 8 应用程序的 config/app.php 中设置了别名。我可以在 Blade 中使用它们来访问按预期使用别名的类。但是使用 class 常量并没有给我完全限定的类名。

@can('viewAny', User::class)

我尝试了什么:

@dump(User::class) // 'User'
@dump(\App\Models\User::class) // 'App\Models\User'
@dump((new User)::class) // 'App\Models\User' (php 8)
@dump(SomeMadeUpClass::class) // 'SomeMadeUpClass'

我应该能够从别名类中获取完全限定的类名吗?或者有没有我可以在不指定模型的命名空间和类 (@can('viewAny', \App\Models\User)) 的情况下与 @can 一起使用的替代语法?

谢谢!

【问题讨论】:

【参考方案1】:

由于添加到config/app.php 的所有别名都是通过AliasLoader 加载的,因此您可以从那里获取实际的类名。

试试这个代码

use Illuminate\Foundation\AliasLoader;
use Illuminate\Support\Arr;

$aliasLoaderInstance = AliasLoader::getInstance()->getAliases();

dump($aliasLoaderInstance);

//replace URL with the aliases you need
dump(Arr::get($aliasLoaderInstance,'URL',null));
//will print     Illuminate\Support\Facades\URL

【讨论】:

以上是关于从 Blade 中的别名类获取完全限定的类名的主要内容,如果未能解决你的问题,请参考以下文章

如何将完全限定的类名映射到 Python 中的类对象?

为啥即使从类内部获取成员函数指针值也需要类名限定?

typeAliases别名

Spring-Spring配置-依赖注入

如何在css或sass中为类名起别名

SpringBoot 整合MyBatis 统一配置bean的别名