Создание и доступ к помощнику в контроллере
Я создал вспомогательный файл в 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.