在控制器中创建和访问帮助器

时间:2019-01-18 10:05:42

标签: php laravel laravel-5.7 laravel-controller

我已经在App文件夹中创建了一个名为Helper.php的帮助文件。

app / Helper.php

<?php

namespace App;

use Illuminate\Support\Facades\DB;

class Helper {

    public function get_username($user_id) 
    {
        $user = DB::table('users')->where('userid', $user_id)->first();

        return (isset($user->username) ? $user->username : '');
    }
}

app / Providers / HelperServiceProvider.php

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class HelperServiceProvider extends ServiceProvider
{
    public function boot()
    {
        //
    }

    public function register()
    {
        require_once app_path() . 'Helper.php';
    }
}

config / app.php

在提供程序的数组内...

App\Providers\HelperServiceProvider::class,

内部aliases数组...

'Helper' => App\Helper::class,

一切正常,但现在出现以下错误。

  

错误消息抛出的错误异常“非静态方法Helper :: get_username($ user-> id)不应被静态调用

但是当我添加static关键字以使其正常工作时。静态和非静态方法有什么区别?

1 个答案:

答案 0 :(得分:0)

别名使您可以访问刀片模板中的外观,而无需将其添加到模板中(请参见use语句)。通过Facade调用方法时,您将静态调用此方法,Facade将调用包含此方法的类的对象。

在Laravel中,创建包含Laravel一样的帮助程序的文件并通过composer自动加载该文件通常更为方便。

Please check here for more details