@wowbate

Почему Laravel ругается на отсутствие констант?

В Laravel новичок.

Есть класс, в котором у меня предполагается бизнес-логика:

<?php

namespace App\Services;

class FinanceService
{
    const REVENUE  = 'plus';
    const EXPENSES = 'minus';

    public function get()
    {
     // что-то делаем
    }


В сервис-провайдере

$this->app->singleton('Finance', function (){
            return new FinanceService();
        });


Фасад:

<?php

namespace App\Facades;

use Illuminate\Support\Facades\Facade;

class Finance extends Facade {

    protected static function getFacadeAccessor() {
        return 'Finance';
    }

}


И конфиг:
'Finance' => App\Facades\Finance::class,

Если делать Finance::get(), то всё работает. Но если попробовать получить константу Finance::REVENUE, то ошибка:

Undefined class constant 'REVENUE'


Что я делаю не так?
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
Alex_Wells
@Alex_Wells
PHP/TS/Kotlin developer
Finance::get() это просто resolve(Finance::class)->get(), следовательно ваши константы так работать не будут - это же константы..

Используйте DI вместо фасадов, а ваши константы вынесите в отдельный enum FinanceOperationType или подобное.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы