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

Ric*_*iti 6 php laravel laravel-5

我有一个自定义类,我必须在我的视图中使用.但我是怎么做到的?

在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',
));
Run Code Online (Sandbox Code Playgroud)

最后,在我看来,我只是使用我的课程:MyClass::myMethod().再次,我如何使用Laravel 5做到这一点?

谢谢

man*_*nix 19

你有两个选择,做一个Service或一个Service Provider.

服务

这个类可以作为一个包含所有方法静态的帮助器.例如,在app/Services文件夹中,您可以创建一个新文件夹:

<?php
namespace Myapp\Services;

class DateHelper{

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

}
Run Code Online (Sandbox Code Playgroud)

然后,config/app.php像这样在这个类中添加一个别名:

'DateHelper' => 'Myapp\Services\DateHelper'
Run Code Online (Sandbox Code Playgroud)

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

服务提供者

另一方面,您可以创建类似文档状态的服务提供者并附加Facade.


San*_*mja 6

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

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

只需创建一个类,如:

应用程序/容器/Helper.php

namespace App\Containers;

class Helper {
    function foo() {
        return 'bar';
    }
}
Run Code Online (Sandbox Code Playgroud)

在刀片视图文件中:

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

<div>
    What's Foo: {{ $helper->foo() }}
</div>
Run Code Online (Sandbox Code Playgroud)

而且,就是这样!是不是很酷!