Функции, специфичные для среды (или приложения)

Создание веб-приложения в Laravel, которое будет клонировано в несколько отдельных экземпляров. Я понимаю, что в файле .env можно указать переменные, специфичные для приложения, поэтому, например, если у приложения была ставка комиссии, применимая к определенным вычислениям, выполняемым в нем, можно было указать один коэффициент конверсии в. env для одной установки и другой для другой установки.

Однако мой вопрос: как лучше всего это сделать с помощью функций, специфичных для среды? Итак, если бы в каждой установке был свой способ расчета комиссии, как лучше всего было бы создать приложение, чтобы оно работало для всех, но тогда нужно отказаться от метода расчета комиссии для этого приложения, зависящего от конкретной установки. ?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
24
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете добавить переменную CALCULATION_METHOD в свой файл .env.. Вы можете прочитать это значение в своем методе вычисления и позволить логике зависеть от этого.

Каждая часть "специфической для установки" конфигурации должна храниться в файле .env.

Ответ принят как подходящий

Я предлагаю по-прежнему использовать переменные, специфичные для среды, но писать свои реализации функций вокруг этих переменных. В вашем примере у вас могут быть разные ставки комиссии и несколько методов расчета комиссии. У вас может быть переменная, которая определяет, какой метод использовать, например:

class CommissionCalculator
{
    public function calculate()
    {
        $method = config('commission.method');
        $rate = config('commission.rate');
        if (method_exists($this, $method)) {
            return $this->$method($rate);
        }

        // throw an exception
    }

    public function method1($rate)
    {
        // Implement method1
    }
}

config / Commission.php

return [
    'rate' => env('COMMISSION_RATE'),
    'method' => env('COMMISSION_METHOD')
];

.env

COMMISSION_RATE=1
COMMISSION_METHOD=method1

Спасибо. Я думаю, что все ответы сводятся к тому, что невозможно иметь чистый метод в конфигурации среды, но это был лучший ответ (особенно комбинация хранения имени метода и использования method_exists, которую я не рассматривал).

Giles Bennett 18.04.2018 06:11

Вы можете добавить базовое значение в файл env и загрузить базовое значение в файл конфигурации и добавить код для переопределения этого параметра конфигурации в методе загрузки appserviceprovider.php.

Логика заключается в том, что при загрузке приложения оно проверяет условие из базы данных и, если оно выполнено, переопределяет значение конфигурации, что означает, что ваш расчет изменился автоматически.

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