Создание и доступ к помощнику в контроллере

Я создал вспомогательный файл в 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 ответ

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

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

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

Другие вопросы по тегам