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

1. Глобальные функции

Для создания глобальных функций, которые доступны в любом месте вашего приложения, вы можете создать файл в каталоге app/Helpers и определить в нем свои функции. Если каталога Helpers нет, создайте его.

Шаг 1: Создайте файл Helpers.php в каталоге app/Helpers.

Шаг 2: Определите в этом файле вашу функцию. Например:

format('d-m-Y');
    }
}

Шаг 3: Чтобы Laravel автоматически загружал файлы из каталога Helpers, добавьте его в composer.json в секции autoload:

"autoload": {
    "files": [
        "app/Helpers/Helpers.php"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},

Шаг 4: Выполните команду composer dump-autoload в терминале, чтобы обновить автозагрузчик.

Теперь вы можете использовать функцию format_date в любом месте вашего приложения.

2. Функции в классах

Если ваша функция тесно связана с определенным классом, вы можете определить ее как метод в этом классе.

Пример:

namespace App\Services;

class DateService
{
    public function formatDate($date)
    {
        return $date->format('d-m-Y');
    }
}

Использование:

use App\Services\DateService;

$dateService = new DateService();
echo $dateService->formatDate(new \DateTime());

3. Трейты

Трейты позволяют вам повторно использовать методы в нескольких классах. Определите трейт с методами, которые вы хотите повторно использовать, и затем используйте этот трейт в любом классе.

Пример трейта:

namespace App\Traits;

trait DateFormatter
{
    public function formatDate($date)
    {
        return $date->format('d-m-Y');
    }
}

Использование трейта:

use App\Traits\DateFormatter;

class SomeClass
{
    use DateFormatter;

    public function someMethod()
    {
        echo $this->formatDate(new \DateTime());
    }
}

Заключение

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