php передача функции в качестве параметра

Функция Php как параметр функции

В моем проекте php у меня есть некоторые функции, которые в некоторых случаях я хочу вызывать в блоке try-catch, а в некоторых случаях не в блоке try-catch.
А теперь я хочу написать функцию, которая получает некоторую функцию в качестве параметра, вызывает ее и возвращает false в случае исключения.

Примерный код, подобный этому, и с поддержкой различного количества параметров для функции someFunction.

Как это организовать?

Решение

Вы должны определить свои оригинальные функции как Затворы поэтому они представлены переменными и могут быть переданы в качестве аргументов функции.

Начиная с PHP 5.6 вы также можете использовать оператор распространения что делает его частью пирога, чтобы поддержать многократные аргументы. Таким образом, один tryIt Функция может содержать функции с различным количеством параметров:

Другие решения

PHP позволяет вызывать несколько вещей, как если бы они были функциями — это включает в себя:

Все это может быть обозначено callable typehint. Реализация вашей функции как таковой:

позволит вам использовать tryTo() за что-нибудь PHP считает вызываемым и обеспечивает, что все, что вы передаете, может быть использовано для вызова функции.

Так что будет работать следующее:

Ты можешь видеть Вот для дополнительной информации.

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

Источник

Принимать функцию в качестве параметра в PHP

мне было интересно, можно ли передать функцию в качестве параметра в PHP; я хочу что-то вроде того, когда вы программируете в JS:

Я хочу, чтобы выполнить эту функцию где-то в exampleMethod. Это возможно в PHP?

8 ответов:

это возможно, если вы используете PHP 5.3.0 или выше.

посмотреть Анонимные Функции в руководстве.

в вашем случае, можно определить exampleMethod такой:

просто, чтобы добавить к другим, вы можете передать имя функции:

Это будет работать в PHP4.

вы также можете использовать create_function чтобы создать функцию в качестве переменной и передать ее. Хотя, мне нравится ощущение анонимные функции лучше. Иди зомбат.

было бы здорово, если бы вы могли изобрести что-то вроде этого (вдохновленный Laravel Illuminate):

согласно ответу @zombat, лучше сначала проверить анонимные функции:

или проверить тип аргумента начиная с PHP 5.4.0:

простой пример использования класса :

Пример 1: basic

Пример 2: std object

Пример 3: нестатический вызов класса

Пример 4: вызов статического класса

как я вижу здесь, анонимная функция может помочь вам: http://php.net/manual/en/functions.anonymous.php

то, что вам, вероятно, понадобится, и это не сказано, прежде чем это как передать функцию, не оборачивая ее внутри функции, созданной на лету. Как вы увидите позже, вам нужно будет передать имя функции, записанное в строку в качестве параметра, проверить его «вызываемость» и затем вызвать его.

в функция для проверки:

затем, чтобы вызвать его, используйте этот фрагмент кода (если вам также нужны параметры, поместите их в массив), видимый по адресу:http://php.net/manual/en/function.call-user-func.php

как это следует (аналогичным, без параметров, способом):

вот класс, объясняющий, как сделать что-то подобное :

Источник

Php передача функции в качестве параметра

To experiment on performance of pass-by-reference and pass-by-value, I used this script. Conclusions are below.

3 valuue yes 129 s
4 reference yes 66 us

1. PHP is already smart about zero-copy / copy-on-write. A function call does NOT copy the data unless it needs to; the data is
only copied on write. That’s why #1 and #2 take similar times, whereas #3 takes 2 million times longer than #4.
[You never need to use &$array to ask the compiler to do a zero-copy optimisation; it can work that out for itself.]

2. You do use &$array to tell the compiler «it is OK for the function to over-write my argument in place, I don’t need the original
any more.» This can make a huge difference to performance when we have large amounts of memory to copy.
(This is the only way it is done in C, arrays are always passed as pointers)

3. The other use of & is as a way to specify where data should be *returned*. (e.g. as used by exec() ).
(This is a C-like way of passing pointers for outputs, whereas PHP functions normally return complex types, or multiple answers
in an array)

5. Sometimes, pass by reference could be at the choice of the caller, NOT the function definitition. PHP doesn’t allow it, but it
would be meaningful for the caller to decide to pass data in as a reference. i.e. «I’m done with the variable, it’s OK to stomp
on it in memory».
*/
?>

A function’s argument that is an object, will have its properties modified by the function although you don’t need to pass it by reference.

In function calls, PHP clearly distinguishes between missing arguments and present but empty arguments. Thus:

The best approach, it seems to me, is to always use a sentinel like null as the default value of an optional argument. This way, callers like g and g’s clients have many options, and furthermore, callers always know how to omit arguments so they can omit one in the middle of the parameter list.

PASSING A «VARIABLE-LENGTH ARGUMENT LIST OF REFERENCES» TO A FUNCTION
As of PHP 5, Call-time pass-by-reference has been deprecated, this represents no problem in most cases, since instead of calling a function like this:
myfunction($arg1, &$arg2, &$arg3);

provided you have defined your function as
function myfuncion($a1, &$a2, &$a3) < // so &$a2 and &$a3 are
// declared to be refs.
.
>

In the following code I tried to amend this by using the
array() language-construct as the actual argument in the
call to the function.

Источник

Передача аргументов — PHP: Основы

Передача одного аргумента

Функции без аргументов встречаются редко. Чаще функции принимают на вход данные, как-то их используют и выдают результат обратно. Сначала мы познакомимся с определением функций, принимающих на вход один аргумент. Посмотрите на определение ниже:

Новички иногда пытаются сделать примерно такое определение функции:

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

Аргумент должен быть переменной, иначе он не сможет быть аргументом, то есть чем-то, что принимает значение при вызове.

Если же вам нужна какая-то информация в функции, и вы заранее знаете, какая именно, то аргумент для этого не нужен: ведь мы уже умеем сохранять значения для последующего использования — достаточно создать переменную в самом теле:

Передача нескольких аргументов

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

Параметры по умолчанию

Напомним, что аргумент может быть необязательным. У такого аргумента есть значение по умолчанию.

Каким образом там сделаны аргументы по умолчанию? Давайте заглянем в определение этой функции:

Аргументов по умолчанию может быть любое количество, но все они должны быть в конце списка аргументов. То есть такие строчки кода синтаксически некорректны:

Чтение документации

Умение читать документацию — один из важнейших навыков любого разработчика.

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

Основной раздел, к которому программисты возвращаются постоянно — справочник функций языка. Во-первых, этих функций много и невозможно запомнить всё. Во-вторых, в PHP особенно остро стоит проблема несогласованности параметров и возвращаемых значений функций. Поэтому постоянно приходится вспоминать их порядок.

Основываясь на сказанном выше, мы можем вызвать функцию следующим образом:

Дополнительные материалы

php передача функции в качестве параметра. Смотреть фото php передача функции в качестве параметра. Смотреть картинку php передача функции в качестве параметра. Картинка про php передача функции в качестве параметра. Фото php передача функции в качестве параметра

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Источник

Передача функции в качестве переменных другим функциям

Такая структура сработает в JavaScript, возможно ли создать аналагичную в PHP?

Добавлено через 5 минут
А вообще надо передать тело функции объекту, чтобы он выполнил её при определённых условиях

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Передача параметров функциям. Можно ли изменить этот параметр внутри функции
Доброго времени суток, господа знатоки.В универе препод задал сделать проверку входных данных на.

Передача функции в качестве аргумента другой функции
в книге Харви и Пол Дейтл нашел следующий вариант решения задачи, передачи функции в качестве.

Передача функции в качестве аргумента
Передаю в функцию (А) в качестве аргумента другую функцию (Б). В функцию Б передаю переменную из А.

Передача функции в качестве параметра
Как передать функцию с параметрами в transform? Т.е., например, мне надо из каждого числа вектора.

Перед вызовом замыкания из переменной объекта его надо записать в любую другую переменную.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

php передача функции в качестве параметра. Смотреть фото php передача функции в качестве параметра. Смотреть картинку php передача функции в качестве параметра. Картинка про php передача функции в качестве параметра. Фото php передача функции в качестве параметраПередача функции в качестве параметра
Может кто помочь объяснить следующую часть кода: double MyMethod(Func f.

Передача функции в качестве параметра
Все привет. Помогите в решении следующей проблемы: есть класс XXX, один из методов которого.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *