如何在 Laravel 5 的视图中使用我的自定义 class

How can I use my custom class in a view on Laravel 5

我有一个必须在我的视图中使用的自定义 class。但是我该怎么做呢?

在Laravel 4.2中,我直接运行composer.phar dump-autoload然后在start/local.php中添加如下:

ClassLoader::addDirectories(array(
    app_path().'/commands',
    app_path().'/controllers',
    app_path().'/models',
    app_path().'/database/seeds',
    app_path().'/helpers/MyClass',
));

最后,在我看来,我只是使用我的 class: MyClass::myMethod()。同样,我如何使用 Laravel 5?

谢谢

您有两个选择,ServiceService Provider

服务

这个 class 可以作为一个助手,它的所有方法都是静态的。例如,在 app/Services 文件夹中,您可以新建一个:

<?php
namespace Myapp\Services;

class DateHelper{
 
    public static function niceFormat(){
        return "This is a nice format";
    }

}

然后,在 config/app.php 处为此 class 添加一个别名,如下所示:

'DateHelper' => 'Myapp\Services\DateHelper'

现在,在您的应用程序中,您可以调用 niceFormat() 方法,例如 \DateFormat::niceFormat();

服务提供商

另一方面,您可以创建像 docs state and attach a Facade 这样的服务提供者。

我刚刚发现您可以通过简单的注入将任何 class 实例添加到视图中。

https://laravel.com/docs/5.6/blade#service-injection

只需创建一个 class 如:

app/Containers/Helper.php

namespace App\Containers;

class Helper {
    function foo() {
        return 'bar';
    }
}

在blade中查看文件:

@inject('helper', 'App\Containers\Helper')

<div>
    What's Foo: {{ $helper->foo() }}
</div>

就是这样!是不是很酷!