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

时间:2015-02-06 17:45:49

标签: 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',
));

最后,在我的观点中,我只使用我的课程:MyClass::myMethod()。再次,我如何使用Laravel 5进行此操作?

由于

2 个答案:

答案 0 :(得分:18)

您有两种选择,即ServiceService Provider

服务

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

<?php
namespace Myapp\Services;

class DateHelper{

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

}

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

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

现在,在您的应用中,您可以像niceFormat()

那样调用\DateFormat::niceFormat();方法

服务提供商

另一方面,您可以创建类似docs州的服务提供商,并附加Facade

答案 1 :(得分:1)

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

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

只需创建一个像这样的类:

app / Containers / Helper.php

namespace App\Containers;

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

在刀片视图文件中:

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

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

就这样!那不是很酷!