ООП - проблема с методоми Unknow error

neonet

Новичок
Простите, хотелось бы уточнить ..
я так понимаю нада ещё в родительском классе добавить значение к $prefix? Но ведь по сути оно должно меняться, откуда мне может быть заранее оно известно?

-~{}~ 10.07.09 14:55:

Спастбо.. большое вам добрые Гуру...)) с вашей помощью победил проблему.... добавл $prefix=''
и всё стало на свои места...
 

dimagolov

Новичок
Спастбо.. большое вам добрые Гуру...)) с вашей помощью победил проблему.... добавл $prefix=''
и всё стало на свои места...

только проверь что ты нигде не делаешь вызов с 2-я аргументами. инааче второй попадет не туда, куда попадал раньше.
 

StUV

Rotaredom
странно, не смог найти в мане в "Language Reference / Classes and Objects (PHP 5)" ничего по поводу правил изменения интерфейсов методов при наследовании... - или м.б. я плохо искал ?
 

StUV

Rotaredom
dimagolov
ты о чем ?..
в пхп ж нет перегрузки по интерфейсам - метод все-равно будет динамически определяться конкретным типом - независимо от количества аргументов
 

AmdY

Пью пиво
Команда форума
про эти класс можно сказать только одно - такой футбол нам не нужен. у меня волосы дыбом встают от их вида.
а вот это нововведение в 5.3 с этими аргументами - это писец или всё же баг? в анонсах вроде ничего не слышно было :(.
 

neonet

Новичок
Автор оригинала: AmdY
про эти класс можно сказать только одно - такой футбол нам не нужен. у меня волосы дыбом встают от их вида.
а вот это нововведение в 5.3 с этими аргументами - это писец или всё же баг? в анонсах вроде ничего не слышно было :(.
Если речь идет о моей проблеме,
то у меня стоит PHP 5.2.10
 

dimagolov

Новичок
StUV, я конкретно о его коде, посмотри его, там недостающий параметр был в середине.

-~{}~ 10.07.09 08:19:

neonet, конкретно эта фишка появилась как раз в 5.2.10
 

StUV

Rotaredom
а вот это нововведение в 5.3 с этими аргументами - это писец или всё же баг?
это приятная новость =)
т.к. теперь даже по-дурости не получиться при наследовании так извращаться над переопределяемыми интерфейсами
(зы: нормально спроектированный код "не заметит" этого изменения).
 

neonet

Новичок
Автор оригинала: dimagolov
StUV, я конкретно о его коде, посмотри его, там недостающий параметр был в середине.
Совершенно верно.. именно это устранило все мои предедущие ошибки..

Вот только никак не могу понять.. ведь сайт работал без каких либо ошибок при переезде первые 3-4 дня...

И вдруг по щучиму велению, скрипт встал в позу.... из которой с вашей помощью мне удалось вытянуть .

PHP не обнавлялся..
 

StUV

Rotaredom
dimagolov
ага, врубился

neonet
ты добавил в метод парент-класса новый аргумент вторым, а не последним - если у тебя в системе есть объекты этого класса (или других, наследущих его) вызывающие этот метод с одним аргументом - будет косяк
 

dimagolov

Новичок
PHP не обнавлялся..
откуда ты знаешь?

AmdY, я тоже в ChangeLog по крайней мере 5.2.10 этого не нашел, но думается, что в E_STRICT это было давно, просто с 5.2.10 стало E_WARNING

StUV, поддерживаю, говнокода уменьшится, а его писателям сейчас придется попотеть :)
 

neonet

Новичок
Автор оригинала: StUV
dimagolov
ага, врубился

neonet
ты добавил в метод парент-класса новый аргумент вторым, а не последним - если у тебя в системе есть объекты этого класса (или других, наследущих его) вызывающие этот метод с одним аргументом - будет косяк
Как это можно технически проверить? дабы не перечитывать тысячи строк в поиске такого метода?

откуда ты знаешь?
Сайт на вирт хостинге..

Некому, его обновлять кроме меня...
 

dimagolov

Новичок
дабы не перечитывать тысячи строк в поиске такого метода?
а никак. перечитывать придется, хоть стреляйся. потому что тебе мало будет просто посмотреть кол-во параметров, надо будет в случае более чем одного аргумента точно определить тип объекта, чтобы понять какой именно метод вызывался. и надо или нет там добавлять 3-й аргумент. а если объект передается параметром (то есть определить его тип сразу не представляется возможным), то шоу с обратной трассировкой становится вообще интересным....

-~{}~ 10.07.09 08:36:

Сайт на вирт хостинге..

Некому, его обновлять кроме меня...
ага.... некому.... спроси у суппорта хостинга
 

neonet

Новичок
Автор оригинала: dimagolov
а никак. перечитывать придется, хоть стреляйся. потому что тебе мало будет просто посмотреть кол-во параметров, надо будет в случае более чем одного аргумента точно определить тип объекта, чтобы понять какой именно метод вызывался. и надо или нет там добавлять 3-й аргумент. а если объект передается параметром (то есть определить его тип сразу не представляется возможным), то шоу с обратной трассировкой становится вообще интересным....

-~{}~ 10.07.09 08:36:


ага.... некому.... спроси у суппорта хостинга
Супер)))... Вдохновил))))
 

AmdY

Пью пиво
Команда форума
Автор оригинала: dimagolov
AmdY, я тоже в ChangeLog по крайней мере 5.2.10 этого не нашел, но думается, что в E_STRICT это было давно, просто с 5.2.10 стало E_WARNING
поэтому я всегда програмилю с включённым E_STRICT, ошибок не было, или может я так не извращался. но в любом случае, контроль за этим должен быть возложен на интерфейс, а так полифоризм сводится на нет. и смешно это нововведение на фоне лямбда функций и goto, надеюсь исправят.
 

StUV

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

AmdY

Пью пиво
Команда форума
StUV
уже есть не только для входных, который рассширили, но и для возвращаемых.
 
Сверху