php: обработка вызовов несуществующих функций

S
На сайте с 17.06.2009
Offline
20
1003

добрый день

не смог найти ответа на свой вопрос, просьба знатокам помочь

ситуация: нужно использовать куски чужого кода и иногда в ненужных мне областях кода всплывают неопределенные функции, из-за чего возникает fatal error и скрипт прерывается, мне нужно сделать так что бы обращение к любой неопределенной функции возвращало false и скрипт продолжал работать , как бы такое сделать?

у меня есть идея только отпарсить заранее подключаемые файлы (все дерево) и насоздавать этих пустых функций, но надеюсь что есть более простое решение

заранее спасибо за помощь

[Удален]
#1

никак, это fatal error

Варианта 2:

1) проверять перед вызовом if (function_exists(...))

2) написать свой обработчик ошибок, правда сомневаюсь я что удастся возобновить работу скрипта после фатала.

P
На сайте с 02.06.2009
Offline
14
#2

Лучше переписать чужой код под себя, и выкинуть из него "левые" инклюды, чем пытаться сделать из дерьма конфетку... ИМХО...

DI
На сайте с 03.01.2007
Offline
123
#3

Извращенный способ:

Запускать скрипт по кронтабу ежеминутно, с выводом в файл. Другим ежеминутным скриптом проверять этот файл, парсить ошибку на предмет получения имени функции, и записывать в подключаемый к основному скрипту файл пустую функцию. Оставить все это работать, получив на выходе список пустых функций. Или тоже самое запустить в цикле на аяксе — дергать скрипт, получать ошибку, записывать функцию в файл, снова дергать скрипт.

Теоретически ≈20−30 строк кода на jquery :)

Высказывание идиотского утверждения требует на порядок меньше усилий, чем его последовательное и обоснованное опровержение и более того, иногда это опровержение вообще невозможно. © (http://zhurnal.lib.ru/s/shapiro_m_a/raspidiota.shtml)
[Удален]
#4
profiwebmasterforyou:
Лучше переписать чужой код под себя, и выкинуть из него "левые" инклюды, чем пытаться сделать из дерьма конфетку... ИМХО...

О да, а если у вы поставили к себе в комп новую видеокарту и она местами глючит, то надо спаять собственную видеокарту.

HraKK
На сайте с 02.03.2009
Offline
128
#5

Функций или методов?

Если функций то

PHP не поддерживает перегрузку функции, также отсутствует возможность переопределить или удалить объявленную ранее функцию.

А методы можно - магическими перехватить.

я гарант (/ru/forum/493343) уже не оказываю данные услуги, извините.
dkameleon
На сайте с 09.12.2005
Offline
386
#6
neolord:
О да, а если у вы поставили к себе в комп новую видеокарту и она местами глючит, то надо спаять собственную видеокарту.

Зачем? Достаточно дрова переписать :)

Дизайн интерьера (http://balabukha.com/)
[Удален]
#7
HraKK:
Функций или методов?
Если функций то
А методы можно - магическими перехватить.

о, я смотрю одумались. Исходное сообщение было более любопытным)

S
На сайте с 17.06.2009
Offline
20
#8

большое спасибо за советы (с выводом в файл и парсингом сообщений об ошибке идея куда лучшая чем моя с парсингом всего кода)

проблема в том что я использую разные массивы файлов и переписать под себя нет возможности (просто неоправдано долго и не нужно)

имеются ввиду именно функции к которым происходят "мусорные" обращения (то есть на результат нужный мне они не повлияют) а фатальные ошибки выскакивают из-за них

если у когото есть еще предложения как решить проблему - с удовольствием выслушаю

iamliss
На сайте с 23.12.2006
Offline
96
#9

Простой обработкой ошибок и исключений.

Смотри пример в атачах.

Словится всё ;)

за мир во всём мире
Dreammaker
На сайте с 20.04.2006
Offline
570
#10
iamliss:
Словится всё

угу, только вот то что нужно не словило :D

Fatal error: Call to undefined function test() in /home/roman/public_html/starter/test.php on line 70

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий