Процедурный подход в PHP и ОО. Налицо несовместимость синтаксиса.

Духовность™

Продвинутый новичок
вапще еррор репортинг 0 и всё =)
такое предлагали сделать для view native tempklate.

тогда как быть с другими элементами программы? хелперы всякие там. всё-таки отключать контроль ошибок - это какой-то варварский метод.
 

whirlwind

TDD infected, paranoid
C_TIGER goto тоже где-то был. А еще, ошибки можно в базу данных записывать. Даже с бэктрейсом и даже с подсветкой синтаксиса.
 

cDLEON

Онанист РНРСlub
AmdY
Ну, например, от вашего "избавиться от isset" можно и значком @ (как сказал C_TIGER) и я не вижу в этом НИ ЧЕГО варварского только потому, что убивается только ТО, что не нужно видеть при разработке.... И подводных камней за мой весь опыт в этом месте не наблюдалось....
 

whirlwind

TDD infected, paranoid
cDLEON тебе просто везло. вот когда ты часа три проведешь в отладке изза отключенных нотайсов и какой-то "гребанной не той буковки, введенной по ошибке" в ключе массива, вот после этого придет понимание.

PS. А все о чем мы говорим всего-лишь значительно снижает вероятность таких нелепых багов.
 

cDLEON

Онанист РНРСlub
whirlwind
ну давайте начнём с того, что при отлове бага (когда та же заглушка будет стоять, только с помощью isset()) грабли те же, только в профиль....
А нотайсы я не советую отключать. Я отстаиваю ТОЛЬКО использование @ там, где это реально возможно и ни как не вредит....
 

Fortop

Новичок
AmdY
ArrayObject больше для того, чтобы с _объектом_ можно было работать как с массивом и использовать функции для работы с массивами count foreach
Для count
implements Countable
Для foreach
implements Iterator

Причем тут массив?

$this->getRequest()->user_id->toInt(); $this->getRequest()->user->id->toInt();
публичные свойства это не совсем ООП, о чем речь?

это имет смысл для избавления проверак типо isset
Какое это имеет отношение к ООП? Никакого? Печаль... печаль...
 

whirlwind

TDD infected, paranoid
Оно не может не вредить. За собакой может стоять такая же неотлавливаемая ошибка. Вы же не пишете юнит-тестов, что бы быть уверенным в том, что ваш код работает после внесения каждой новой строки. Вы проверяете работу большими кусками. Все это для нас пройденный этап, так что спорить тут с вашей стороны, когда нет понимания, я вообще не вижу смысла. Это из серии не читал, но осуждаю.

PS. А вот когда будут юнит тесты, вы реально в цифрах увидете сколько опечаток допускает программист и сколько эти тесты экономят времени. И тогда еще раз подтвердится правильность такого подхода, при котором ошибки _любые_ не затыкают, а исправляют на этапе разработки.
 

cDLEON

Онанист РНРСlub
whirlwind
Я же не говорю делать, например @include(..)
Я советую всего то заменять isset на входящие параметры - @
Т.к. в этом месте это ни чем не вредит....(а читаемость, лично для меня увеличивает) А в других - я как то и не использую эту фичу...
 

Fortop

Новичок
вот когда ты часа три проведешь в отладке изза отключенных нотайсов и какой-то "гребанной не той буковки, введенной по ошибке" в ключе массива, вот после этого придет понимание.
Как насчет 3х дней, из-за не той буковки в недрах хранимой процедуры БД?
Именно поэтому проверять, проверять, и еще раз проверять.

cDLEON
У них проблема в том, что они как раз не хотят проверять ничего.

triumvirat
тогда как быть с другими элементами программы? хелперы всякие там. всё-таки отключать контроль ошибок - это какой-то варварский метод.
А возвращать лажу вместо ошибки(как предлагалось ниже) это нормально?
AmdY
вернуть объект затычку, котораяed итоге вернёт 0 и без нотисов.
Это невероятно помогает отладке..... Ну-ну...

Если Вы не предусмотрели что данный элемент объекта может отсутствовать - это Ваши личные проблемы.

-~{}~ 16.02.10 21:36:

при котором ошибки _любые_ не затыкают, а исправляют на этапе разработки.
+1
 

AmdY

Пью пиво
Команда форума
Fortop
ман ArrayObject implements IteratorAggregate , Traversable , ArrayAccess , Serializable , Countable

на самом деле там нет публичных свойств, это массив типо $_REQUEST в обёртке, со всеми необходимымы методами для типизации и фильтрации.

whirlwind я знаю про собаку, мне здесь подсказали, а то лбом о стену бился, на php5.3 грешил, когда @include написал.
 

whirlwind

TDD infected, paranoid
Я вам сейчас открою страшный секрет. Если не использовать ключей массивов и публичных свойств, то проверять вообще ничего не придется. Язык сам подскажет где затык в программе - программа просто не будет работать. И не надо ничего отлаживать. А если мало информативности, на помощь придут ексепшены. Для этого надо всего-то соблюдать пару элементарных правил: никаких глобалов, никаких публичных свойств. Вуаля!
 

cDLEON

Онанист РНРСlub
AmdY
Кстати о птичках)))
С проблемой @include я бился 1.5 года назад:)))
Я то думал, что она только STD_ERR отлавливает)) А оказывается кушает весь вывод =))
 

C_TIGER

Новичок
cDLEON тебе просто везло. вот когда ты часа три проведешь в отладке изза отключенных нотайсов и какой-то "гребанной не той буковки, введенной по ошибке" в ключе массива, вот после этого придет понимание.<<<<
я же сказал set_error_handler
он и при @ дёргается и при error_reporting(0)
 

whirlwind

TDD infected, paranoid
C_TIGER А перед вами заказчики часто ставили задачу писать код обработки ваших собственных ошибок? Подозреваю что ни разу.
 

C_TIGER

Новичок
whirlwind
я не работаю на заказ =)
вы говорили про отладку, я сказал что можно заюзать. чтоб не искать сутками где там не та буква

или я вас не понял?
 

Fortop

Новичок
AmdY
Не надо мне манов, я их знаю возможно даже несколько лучше Вашего.

Вопрос был в другом, если Вам нужно поведение объекта в foreach - реализуйте соответствующий интерфейс. Какое это имеет отношение к обычным массивам?
Какой вопрос Вы хотите решить, и что Вам мешает это сделать?

Лично я люблю ArrayObject по одной простой причине - мне удобны массивы, но возникают ситуации когда нужно контролировать целостность внутренней структуры объекта - массив увы, этого не позволяет.

whirlwind
Если не использовать ключей массивов и публичных свойств, то проверять вообще ничего не придется.
Вот именно. У Вас есть возможность донести эту мысль до AmdY и triumvirat?
 

C_TIGER

Новичок
вообще я при разработке пишу где могу empty()
но нотисы у меня выключены. тк иногда уж больно они не к месту, а за собаку некоторые загрызут
 

whirlwind

TDD infected, paranoid
C_TIGER просто в постановку вопроса надо вдуматься. Часть (потенциально бажная) вашей программы (потенциально бажной) предназначена для обработки (обнаружения) допущенных вами ошибок. По мне, так звучит как полный бред и бессмыслица.
 

C_TIGER

Новичок
whirlwind
мы говорили про отладку? тогда никакого бреда
вот сколько уже пишу, ну не было у меня таких проблем =)

-~{}~ 16.02.10 23:03:

ну вот скажите мне, зачем вам эти ошибки при уже готовой и протестированной программе?
 
Сверху