laravel 自定义 类 添加别名

laravel custom classes add alias

所以我想为自定义 类 添加一个别名,以便能够在 blade:

中使用它们
<?php
namespace App\Classes;

class Requirement
{
    public static function Test()
    {
        return "hello";
    }
} 

config/app.php 中,我添加了一个像这样的别名:

...
'Requirement' => App\Classes\Requirement::class

然后,我希望能够在 blade 模板中调用它,例如

{{ Requirement::Test() }}

但是别名不知何故不起作用。我也试了composer dump-autoload,还是不行

顺便说一句:像这样添加自定义 类 是否是实现 site-specific 逻辑(如从数据库检索和处理数据)的可行方法,还是有更好的方法?

编辑 1

我在 app/Facades 中创建了 Requirement.php,内容如下

<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;

class Requirement extends Facade{
    protected static function getFacadeAccessor() { return 'Requirement'; }
}

app/Providers中添加了PageContentProvider.php,内容如下

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class PageContentProvider extends ServiceProvider
{
    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind('Requirement', function($app){
            return new \App\Classes\Requirement();
        });
    }
}

config/app.php 中别名

'Requirement'=>App\Facades\Requirement::class

以及提供商

App\Providers\PageContentProvider::class

但还是不行。

编辑 2

通过添加类似

的内容
exit();

echo "blabla";

register() 内,没有任何变化。这是否表明 PageContentProvider 甚至没有加载?

编辑 3

由于加载了标准 AppServiceProvider,我删除了 config/app.phpAppServiceProvider 的相应条目... 它仍然有效! 不知何故,我的更改没有得到应用。有人对此有解决方案吗?

如果可行,试试这个:

在你的控制器中:

 $whateveryour_variable = Requirement::Test();
 return view('yourview',compact('whateveryour_variable'));

在您看来:

   {{$whateveryour_variable}}

您可以在您的数据库中获取数据,然后将其存储在一个变量中,然后将其传递到您的视图中。

你试过用斜杠吗?

{{ \Requirement::Test() }}

编辑:语法

您要查找的是 Façades

您创建了一个 Façade class,其中包含对服务容器中 class 绑定的引用,这就是您在 [=] 中的 aliases 数组中使用的内容18=]config/app.php 文件.

文档:http://laravel.com/docs/5.1/facades

添加到您的作曲家文件:

"autoload": {
    //...
    "files" : ["app/classes/Requirement.php"]
},

然后添加到您在 config/app.php

中所写的别名

然后您就可以在模板中使用:

{{ Requirement::test() }}

问题根本不是代码: 在意识到 config/app.php 中的更改没有得到应用后,一个简单的

php artisan config:clear

从字面上解决了我在问题中提出的每个问题。

因为你提到你需要 Blade 中的 class:

您可以使用 blade 文件顶部的 blade @inject 函数代替设置别名。

@inject('your_class','App\Helpers\SomeNamespace\Yourclass')

然后在 blade 模板中:

{{$your_class->doSomething()}}