Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Уничтожить функцию 
:(
    Опции темы
AztEK
Дата 6.6.2006, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Необходимо удалить ффункцию, чтобы потом можно было задать новую с этим же именем и не было redeclaire. В мануале о адресу http://ru.php.net/manual/ru/ref.funchand.php упоминается только unregister_tick_function, но это похоже не то...Помогите? 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Mal Hack
Дата 6.6.2006, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



А зачем? Это противоречит принципам проектирования. Если тебе нужно реализовать перегрузку, то используй наследование в классах или создавай функцию динамически через create_function. 
PM ICQ   Вверх
S.A.P.
Дата 6.6.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 3
Всего: 71



AztEK, собственно а как ты себе предсталяешь перегрузку функций в PHP? В PHP нет вложенных функций, функции компилируются сразу и вызываются вне зависимости от того, где были объявлены: выше, ниже, правее, левее... В соответствии с этим порядок компиляции твоих функций не зависит от логики программы, разве что через include из подключать. 
PM MAIL   Вверх
Serkys
Дата 6.6.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 4
Всего: 22



Цитата(S.A.P. @  6.6.2006,  22:52 Найти цитируемый пост)
В PHP нет вложенных функций, функции компилируются сразу и вызываются вне зависимости от того, где были объявлены: выше, ниже, правее, левее..

Вложенные функции есть (если я это понятие правильно понимаю). Можно объявить функцию внутри функции, и вложенная функция не будет определена до первого вызова родительской функции. 
PM MAIL   Вверх
AztEK
Дата 7.6.2006, 06:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



2all
Пишу движок со сменными модулями. Если какой-то модуль регистрирут функцию, а другой регистрирует свою с этим же именем, получаем redeclaire...


Serkys, хм...ты меня на мысль натолкнул...у меня модуль инклудится внутри функции(метода класса, если точнее), полученный контент буферизируется и складируется куда надо... При инклуде нового модуля вызывается новая версия этой функции... В этом случае можно что-нибудь сделать?

Добавлено @ 06:05 
Сегодня поэкспериментирую 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Mal Hack
Дата 7.6.2006, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Объекты надо использовать... 
PM ICQ   Вверх
AztEK
Дата 7.6.2006, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Цитата
Объекты надо использовать... 


В смысле? Каждый модуль - отдельный объект?? 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Serkys
Дата 7.6.2006, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 4
Всего: 22



AztEK, а почему нельзя сделать так:
В конце названия функции подставляется microtime() и пишется в сессии какие-нибудь, или типа того. При вызове функции это microtime() достаётся и подставляется к имени функции. 
PM MAIL   Вверх
AztEK
Дата 7.6.2006, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Serkys, можно конечно, но это самый крайний вариант smile...Всё время call_user_func напрягает...smile


P.S. Как я оказывается плохо знаю PHP... 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Serkys
Дата 7.6.2006, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 4
Всего: 22



Можешь через function_exists проверять. Если определена, то в конец цифру. Если цифра есть - то цифру +1.
А для удаления функции я что-то не нашёл... 
PM MAIL   Вверх
AztEK
Дата 7.6.2006, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Serkys это всё равно геморрой сильный...smile...Надеюсь есть другие методы 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Endeveit
Дата 7.6.2006, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 2.6.2006

Репутация: 4
Всего: 7



Цитата(AztEK @  7.6.2006,  07:04 Найти цитируемый пост)
Если какой-то модуль регистрирут функцию, а другой регистрирует свою с этим же именем, получаем redeclaire
В ООП есть такое понятие, как "пространство имён", перенеси его в контекст своих мега функций, т.е. каждой функции назначай префикс = названию модуля. Например функция convertString() будет зваться Catalogue_convertString() в каком-нибудь каталоге продукции, а в модуле статей будет зваться Articles_convertString()
Но всё это от лукавого. Советую пнуть гугл или яндекс на предмет "проектирование и разработка модульной cms", "разработка и проектирование сложных систем", "модульное программирование в пхп" ну и т.д. и т.п. 
PM WWW   Вверх
AztEK
Дата 7.6.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Endeveit, тот же способ, что и у Serkys'a! Создавать фукнции с динамическим именем я не хочу пока что... 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Endeveit
Дата 7.6.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 2.6.2006

Репутация: 4
Всего: 7



Цитата(AztEK @  7.6.2006,  12:13 Найти цитируемый пост)
Endeveit, тот же способ, что и у Serkys'a
Не согласен. Serkys предложил подставлять в имя функции цифры, время, да ещё и в сессии всё класть. А я предлагаю создать подобие пространства имён. И иметь они будут не динамические имена, а статические. 
PM WWW   Вверх
Azazel
Дата 7.6.2006, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 7.6.2006

Репутация: нет
Всего: нет



А возможно просто для начала озвучится КОНКРЕТНЫЕ требования для которых данный гемморой надо?smile А вообще как было выше правильно замечено Вам надо использовать namespaces... 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0907 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.