![]() |
ссылка на ф-цию из ф-ции
все привыкли повторяющийся кусок текста выносить в отдельный файл и просто инклюдить, а повторяющийся элемент кода выносить в ф-цию(кот. тоже можно вынести в отдельный файл) и потом вставлять собственно ф-цию. Как сделать ф-цию, которая будет передавать управление другой наперед не известной ф-ции? На многих сайтах используются сессии для передачи информации о пользователе (например) от одной страницы сайта другой. Т.е. мы имеем нечто вроде:
Код:
if(session_is_registered("valid_user"))я веду к тому, что нельзя ли сделать что-то вроде (считаем что $valid_user - глобальная переменная): Код:
function SIR(ссылка на ф-цию) |
Мне кажется, стоит попробовать так:
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) в пхп невозможны, если я не ошибаюсь ;) . |
да это вариант
единственное что, не нравится мне идея использоватьдля такой малой феньки объекты, они же каждый раз будут новую копию в памяти создавать, а это... ну тупо это и некрасиво, и упераемся мы опять в тоже самое, ссылка на объект)))
я так думаю, мы же можем передавать ссылку на переменную Код:
$a=1;при том что Код:
$a=1;особенно это имеет смысл для переменных с большими значениями, например для массивов вот надо будет попробовать так же с ф-циями поступить, может прокатит, а если не прокатит, то только твой вариант остается, но просто тогда кажись овчинка выделки не стоит |
:eek:
Нувы блин даете ... Если ныжно передать "контроль" наперед неизвестной функции напиши PHP код:
|
кул
снимаю шляпу, опробовал, все прокатило, уважение отцу
|
| Часовой пояс GMT +4, время: 20:37. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.