Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 25.07.2002, 12:58
ZJA вне форума Посмотреть профиль Отправить личное сообщение для ZJA Посетить домашнюю страницу ZJA Найти все сообщения от ZJA
  № 1  
ZJA

Регистрация: Jun 2001
Адрес: Москва
Сообщений: 166
По умолчанию ссылка на ф-цию из ф-ции

все привыкли повторяющийся кусок текста выносить в отдельный файл и просто инклюдить, а повторяющийся элемент кода выносить в ф-цию(кот. тоже можно вынести в отдельный файл) и потом вставлять собственно ф-цию. Как сделать ф-цию, которая будет передавать управление другой наперед не известной ф-ции? На многих сайтах используются сессии для передачи информации о пользователе (например) от одной страницы сайта другой. Т.е. мы имеем нечто вроде:
Код:
if(session_is_registered("valid_user"))
{
//какой-то набор действий
}
else
{
echo"идите регистрируйтесь";
}
, теперь допустим у сайта много разных мест где надо проверить валидность пользователя и каждый раз нам придется использовать эту конструкцию.
я веду к тому, что нельзя ли сделать что-то вроде (считаем что $valid_user - глобальная переменная):
Код:
function SIR(ссылка на ф-цию)
{
if(session_is_registered("valid_user"))
{
ф-ция
}
else
{
echo"идите регистрируйтесь";
}
}
Не то чтобы это сильно повлияло на скорость, но читабельность по-моему должна возрасти.
__________________
Если что-то может случиться... оно обязательно произойдет

Старый 25.07.2002, 13:28
RFMitrio вне форума Посмотреть профиль Отправить личное сообщение для RFMitrio Посетить домашнюю страницу RFMitrio Найти все сообщения от RFMitrio
  № 2  
RFMitrio
 
Аватар для RFMitrio

Регистрация: Aug 2001
Адрес: город на Неве
Сообщений: 1,908
Отправить сообщение для RFMitrio с помощью ICQ
Мне кажется, стоит попробовать так:
class A
{
function doOne()
{
}
}

class B
{
function doOne()
{
}
}

То есть функция одна, но для разных классов. Потом делаешь:
$a=new A;
$b=new B;

function SIR($obj)
{
if(session_is_registered("valid_user"))
{
$obj->doOne();
}
else
{
echo"идите регистрируйтесь";
}
}

И вызываешь свою функцию SIR для разных объектов:
SIR($a);
SIR($b);
Вот и все дела. Мне кажется, должно раюотать.
-------
Гы, а вот сишные конструкции типа void (*mysig(int sig, void(*hndlr)(int)))(int) в пхп невозможны, если я не ошибаюсь .
__________________
suum quique

Старый 25.07.2002, 13:55
ZJA вне форума Посмотреть профиль Отправить личное сообщение для ZJA Посетить домашнюю страницу ZJA Найти все сообщения от ZJA
  № 3  
ZJA

Регистрация: Jun 2001
Адрес: Москва
Сообщений: 166
По умолчанию да это вариант

единственное что, не нравится мне идея использоватьдля такой малой феньки объекты, они же каждый раз будут новую копию в памяти создавать, а это... ну тупо это и некрасиво, и упераемся мы опять в тоже самое, ссылка на объект)))
я так думаю, мы же можем передавать ссылку на переменную
Код:
$a=1;
function(&$a)
{
$a++;
}
echo $a;
получим 2
при том что
Код:
$a=1;
function($a)
{
$a++;
}
echo $a;
получим 1
особенно это имеет смысл для переменных с большими значениями, например для массивов
вот надо будет попробовать так же с ф-циями поступить, может прокатит, а если не прокатит, то только твой вариант остается, но просто тогда кажись овчинка выделки не стоит
__________________
Если что-то может случиться... оно обязательно произойдет

Старый 26.07.2002, 00:42
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 4  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ


Нувы блин даете ...

Если ныжно передать "контроль" наперед неизвестной функции напиши

PHP код:
$unknown "unnown_function";
$result $unknown(); 
Что может быть проще

Старый 26.07.2002, 11:39
ZJA вне форума Посмотреть профиль Отправить личное сообщение для ZJA Посетить домашнюю страницу ZJA Найти все сообщения от ZJA
  № 5  
ZJA

Регистрация: Jun 2001
Адрес: Москва
Сообщений: 166
Thumbs up кул

снимаю шляпу, опробовал, все прокатило, уважение отцу
__________________
Если что-то может случиться... оно обязательно произойдет

Создать новую тему   Часовой пояс GMT +4, время: 23:40.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:40.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.