laravel自定义类添加别名

时间:2015-09-07 09:28:43

标签: php class laravel alias

所以我想为自定义类添加一个别名,以便能够在刀片中使用它们:

<?php
namespace App\Classes;

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

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

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

然后,我希望能够在像

这样的刀片模板中调用它
{{ Requirement::Test() }}

但是别名不管怎么样。我也试过了composer dump-autoload,但它还没有用。

BTW:添加这样的自定义类是实现特定于站点的逻辑的可行方法,例如从数据库中检索和处理数据,还是有更好的方法?

修改1

我在Requirement.php中创建了app/Facades,其中包含以下内容

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

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

PageContentProvider.php中添加了app/Providers以及以下内容

<?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加载后,我在AppServiceProvider ... 中删除了config/app.php的相应条目,但它仍然有用!我的更改不知何故#39; t得到应用。有人有解决方案吗?

6 个答案:

答案 0 :(得分:5)

问题根本没有代码: 在意识到config/app.php的变化没有得到应用之后,一个简单的

php artisan config:clear

修正了我在问题中提出的每一个问题。

答案 1 :(得分:1)

添加到您的作曲家文件:

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

然后在config / app.php

中添加您的别名

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

{{ Requirement::test() }}

答案 2 :(得分:0)

如果有效,请尝试此操作:

在您的控制器中:

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

在您的视图中:

   {{$whateveryour_variable}}

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

答案 3 :(得分:0)

你试过斜线吗?

{{ \Requirement::Test() }}

编辑:语法

答案 4 :(得分:0)

您正在寻找的是外墙

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

文档:here

答案 5 :(得分:0)

既然你提到你需要Blade中的一个类:

您可以使用刀片文件顶部的刀片@inject功能代替设置别名。

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

然后在刀片模板中:

{{$your_class->doSomething()}}