Класс как аргумент функции, как это использовать? Не совсем понимаю, как работает передача в аргументы анонимной функции.
Скажем, в Laravel в классе Schema в качестве аргумента передаётся класс BlueprintSchema::create(..., function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->nullable();
$table->string('password')->nullable();
$table->string('provider');
$table->string('provider_id');
$table->rememberToken();
$table->timestamps();
});
Schema каким-то образом передаёт в переменную $table свойства Blueprint и позволяет выполнять в теле анонимной функции свои методы.
В обработчике ошибок так же есть нечто похожее на то, что я показал вышеtry {
thisFunctionDoesNotEvenExist(); //ЭтаФункцияДажеНеСуществует()
} catch (\EngineException $e) {
// Подчищаем за собой и записываем информацию об ошибке в лог
echo $e->getMessage();
}
Примеров много еще могу привести, главное, чтобы вы поняли суть вопроса
Собственно, вопрос: что это вообще такое, как гуглить, где читать? Будет неплохо, если будут примеры или толковые объяснения. Есть подозрения, что это как-то связано с паттернами проектирования.

21 Авг 2019 в 07:00
237 +1
1
Ответы
1

Это, что вы показываете, называется анонимные функции или замыкания (closures) в PHP. Анонимные функции позволяют передавать функции как аргументы в другие функции, сохранять их в переменных, и использовать их внутри других функций.

В вашем примере, когда вы передаете анонимную функцию в метод create класса BlueprintSchema, вы создаете замыкание, которое имеет доступ к методам и свойствам объекта, в данном случае Blueprint. Это позволяет вам определять структуру таблицы базы данных, используя методы объекта $table.

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

Чтобы узнать больше о анонимных функциях и обработке исключений в PHP, вы можете почитать официальную документацию PHP или искать информацию в Интернете. Также рекомендуется изучить паттерны проектирования, такие как Стратегия и Наблюдатель, которые могут быть полезны при работе с анонимными функциями и обработкой исключений.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир