Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Передача функции, как параметр для другой
 
 автор: vitalycrash   (17.05.2007 в 21:04)   письмо автору
 
 

Здравствуйте,
Мой вопрос прост: возможно ли это? Возможно ли передать функцию как параметр?
Если да, то не подскажите ли Вы мне как это сделать?
Спасибо!

   
 
 автор: Саня   (17.05.2007 в 21:30)   письмо автору
 
   для: vitalycrash   (17.05.2007 в 21:04)
 

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

   
 
 автор: vitalycrash   (17.05.2007 в 21:35)   письмо автору
 
   для: Саня   (17.05.2007 в 21:30)
 

А всё же?

   
 
 автор: kasmanaft   (17.05.2007 в 21:39)   письмо автору
 
   для: vitalycrash   (17.05.2007 в 21:35)
 

Не понятно что и для чего Вы хотите передавать..

<?php
$text 
'asdf';
echo 
substr($textfloor(strlen($text)/2));
// floor, strlen - функции...
?>

... код функции?

   
 
 автор: Саня   (17.05.2007 в 21:39)   письмо автору
 
   для: vitalycrash   (17.05.2007 в 21:35)
 

Что значит "передать функцию как параметр"?
если что-то типа этого, то нельзя:
<?
function my_cool_func($param1$param2cool_function()) {
  
//...
}

Можно передать имя функции в текстовом виде а потом вызвать через call_user_func().
function my_cool_func($param1, $param2, $function_name) {
  call_user_func($function_name);
  //...
}

   
 
 автор: vitalycrash   (17.05.2007 в 21:44)   письмо автору
 
   для: Саня   (17.05.2007 в 21:39)
 

<?
function my_cool_func($param1, $param2, cool_function()) {
//...
}
Как раз про это и был вопрос-Спасибо!
И за второе спасибо

   
 
 автор: mefestofel   (17.05.2007 в 21:44)   письмо автору
 
   для: vitalycrash   (17.05.2007 в 21:04)
 

Мда... может Вам на C# написать это дело?
;-)

   
 
 автор: vitalycrash   (17.05.2007 в 21:58)   письмо автору
 
   для: mefestofel   (17.05.2007 в 21:44)
 

:) Вы про изображения? или про функции? Думаю не потяну! Да надо на ПХП

   
 
 автор: Саня   (17.05.2007 в 22:11)   письмо автору
 
   для: vitalycrash   (17.05.2007 в 21:58)
 

Просто в Си можно определить адрес резмещения функции в памяти и записать в переменную. Ну а потом вызывать:
#include <iostream.h>
void funt(void) {
  cout << "Hello world!";
}

void main() {
  void (*var)(void);
  var = funct;
  var();
}
В результате на экран выведется "Hello world!".

В PHP, кстати, тоже можно так сделать:
<?php
function blah($text) {
  print 
"<b>$text</b>";
}
$func "blah";
$func("ё-моё");
Браузер покажет "ё-моё".

   
 
 автор: mefestofel   (17.05.2007 в 22:16)   письмо автору
 
   для: Саня   (17.05.2007 в 22:11)
 

Ну да, только разговор шел о Шарпе...
Вы бы еще на 10 языках написали...
:-)
А так в целом правильно.

   
 
 автор: bronenos   (17.05.2007 в 22:18)   письмо автору
 
   для: Саня   (17.05.2007 в 22:11)
 

чем такой способ отличается от create_function()

   
 
 автор: mefestofel   (17.05.2007 в 22:23)   письмо автору
 
   для: bronenos   (17.05.2007 в 22:18)
 

create_function() создаёт анонимную (lambda-style) функцию из переданных параметров и возвращает её уникальное имя. Чаще всего используется для создания функций обработчиков например при использовании array_walk(), usort() и т.д. Где-то я уже писал такой пример... второй метод корявый...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования