Создание и доступ к помощнику в контроллере - PullRequest
0 голосов
/ 18 января 2019

Я создал вспомогательный файл в папке App с именем Helper.php.

приложение / 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 : '');
    }
}

Приложение / Поставщики / 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';
    }
}

конфиг / app.php

Внутри массива провайдера ...

App\Providers\HelperServiceProvider::class,

Внутри aliases массив ...

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

Все работало нормально, но теперь у меня следующая ошибка.

ErrorException выдается с сообщением «Нестатический метод Helper :: get_username ($ user-> id) не должен вызываться статически

Но когда я добавляю ключевое слово static, оно работает нормально. В чем разница между статическими и нестатическими методами?

1 Ответ

0 голосов
/ 22 января 2019

Псевдонимы дают вам возможность получить доступ к фасаду в шаблоне лезвия, не добавляя его в шаблон (vie use Statement). При вызове метода через фасад вы вызываете этот метод статически, а фасад вызывает объект класса, содержащего этот метод.

В Laravel, как правило, удобнее создавать файл, содержащий помощники, как это делает Laravel, и автоматически загружать этот файл через композитор.

Пожалуйста, проверьте здесь для более подробной информации

...