- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
// Статическая типизация для PHP < 7.0
set_error_handler(function(){});
function foo(int $bar)
{
var_dump($bar);
}
foo(1); // Работает и выводит int(1)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
// Статическая типизация для PHP < 7.0
set_error_handler(function(){});
function foo(int $bar)
{
var_dump($bar);
}
foo(1); // Работает и выводит int(1)
Недавно разгребал легасикод доставшийся по наследству. Увидел статическую типизацию там где ее не должно было быть. Проект крутится на 5.3.
inkanus-gray 16.03.2016 11:21 # 0
Обработку ошибок ведь подавили.
А статической типизации в PHP нет. Есть так называемый хинт типа, который генерирует исключение, если тип не совпадает с ожидаемым. Но если исключение поймать, то в $bar можно протащить значение любого типа.
KiTE 16.03.2016 16:32 # +2
Я не расставил смайлы. Это был сарказм )
bormand 16.03.2016 19:56 # 0
Но ты же его поймаешь в вызывающей функции... Т.е. цель в общем-то достигнута - функцию с кривым параметром не позвали.
З.Ы. Или set_error_handler тупо поедает все исключения прямо в момент их рождения?
inkanus-gray 16.03.2016 20:11 # +2
Если обработчик, назначенный с помощью set_error_handler, явно не вернул FALSE и принудительно не убил программу, то управление молча возвращается обратно. Как в Бейсике, когда ON ERROR RESUME NEXT.
Т. е. в данном случае хинтинг и пустой обработчик делают взаимно противоположные действия.
1024-- 16.03.2016 11:55 # +3
Vasiliy 16.03.2016 18:29 # 0
Хочется типизации кушайте