Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/60: Рейтинг темы: голосов - 60, средняя оценка - 4.68
 Аватар для Finesse
5 / 5 / 1
Регистрация: 16.01.2011
Сообщений: 37

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

27.04.2012, 09:10. Показов 11531. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно ли в PHP передавать функции в качестве аргумента методам класса? Например есть такой код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
class test {
 function funcToRun() {
 }
 function run() {
  $this->funcToRun();
 }
}
$obj = new test;
$obj->funcToRun = function () {
 echo 'ololo';
}
$obj->run();
Такая структура сработает в JavaScript, возможно ли создать аналагичную в PHP?

Добавлено через 5 минут
А вообще надо передать тело функции объекту, чтобы он выполнил её при определённых условиях
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.04.2012, 09:10
Ответы с готовыми решениями:

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

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

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

4
 Аватар для Dartk
48 / 50 / 4
Регистрация: 15.03.2009
Сообщений: 146
27.04.2012, 14:01
Анонимные функции (замыкания) поддерживаются в php начиная с 5.3.0
Можете почитать здесь http://www.php.net/manual/ru/f... nymous.php
1
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
27.04.2012, 14:44
можно просто передать имя функции как строку и все дела
0
 Аватар для Finesse
5 / 5 / 1
Регистрация: 16.01.2011
Сообщений: 37
28.04.2012, 08:14  [ТС]
Решение найдено

Перед вызовом замыкания из переменной объекта его надо записать в любую другую переменную.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
class test {
    var $funcToRun;
    function run() {
        $i = $this->funcToRun;
        $i();
    }
}
$obj = new test;
$obj->funcToRun = function () {
    echo 'ololo';
};
$obj->run();
0
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 16
15.01.2015, 13:24
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
class test {
    var $funcToRun;
    function run() {
        $i = $this->funcToRun;
        $i();
    }
}
$obj = new test;
$obj->funcToRun = function () {
    echo 'ololo';
};
$obj->run();
А есть ли возможность передать выполняемую функцию через переменную?
т.е. вместо
PHP/HTML
1
2
3
$obj->funcToRun = function () {
    echo 'ololo';
};
PHP/HTML
1
$obj->funcToRun = $func;
а в func уже как-нибудь присвоить функцию.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.01.2015, 13:24
Помогаю со студенческими работами здесь

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

Передача функции в качестве параметра
Может кто помочь объяснить следующую часть кода: double MyMethod(Func<double, double> f, double a, double b, double c) { ...

Передача функции в качестве параметра
Есть ф-я для отправки формы аяксом function ajaxFormRequest(form_id, url, dataT, some_func) { $.ajax({ url: ...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru