Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Развёрнутое объяснение.
Из шестой строчки видно, что свойству, полю map присваивается результат работы функции-члена, метода generateMap, при этом мы видим: на самом деле generateMap ничего не возвращает. Это ошибка, вероятно, случайна, но грубая. Например C++ словит такую ошибку на этапе компиляции, указав, что не может положить ничего во что-то. А в PHP такой код возник, видимо, по той причине, что PHP не отловил на этапе выполнения подобную вопиющую несправедливость по отношению к честному полю map.
С точки зрения php тут всё как раз очень логично. $this->map честно заполнился на этапе выполнения метода generateMap(), и тут же при присваивании затер его в ноль. Издержки отсутствия строгой типизации.
Я не спорю с тем, что это совершенно нормально для PHP. Я в такие ситуации не попадал никогда, имею привычку документировать то, что пишу.
Другое дело, что данная ситуация абсурдна с точки зрения языка высокого уровня. Метод НЕ ВОЗВРАЩАЕТ ничего, а вовсе не ВОЗВРАЩАЕТ НИЧЕГО. И присваивание в данной ситуации абсурдно, должно было бы ловиться при трансляции.
В паскле мы бы наблюдали даже различие организации кода: процедура или функция. Упрощение С сводящие всё к наличию return это упрощение записи.
Если бы функция-член возвращала NULL и размещала его в поле, которое определялось бы массивом, - такая ошибка была бы следствием отсутствия строгой типизации. Данная ситуация - это уже абсурд.
P.S. Вы не подумайте, что я PHP ругаю и пытаюсь унизить (просто как-то получилось, что я словно бы другие языки в пример поставил). Если бы я его не рассматривал как язык выполняющий свою задачу, я бы и не думал о нём. Тут дело именно в том, что данный код #1699 показывает, что существуют в языке проблемные места, граничащие со здравым смыслом, что накладывает на программиста дополнительную ответственность.
юзай строгое сравнение ===
удачного говнокода
Из шестой строчки видно, что свойству, полю map присваивается результат работы функции-члена, метода generateMap, при этом мы видим: на самом деле generateMap ничего не возвращает. Это ошибка, вероятно, случайна, но грубая. Например C++ словит такую ошибку на этапе компиляции, указав, что не может положить ничего во что-то. А в PHP такой код возник, видимо, по той причине, что PHP не отловил на этапе выполнения подобную вопиющую несправедливость по отношению к честному полю map.
Другое дело, что данная ситуация абсурдна с точки зрения языка высокого уровня. Метод НЕ ВОЗВРАЩАЕТ ничего, а вовсе не ВОЗВРАЩАЕТ НИЧЕГО. И присваивание в данной ситуации абсурдно, должно было бы ловиться при трансляции.
В паскле мы бы наблюдали даже различие организации кода: процедура или функция. Упрощение С сводящие всё к наличию return это упрощение записи.
Если бы функция-член возвращала NULL и размещала его в поле, которое определялось бы массивом, - такая ошибка была бы следствием отсутствия строгой типизации. Данная ситуация - это уже абсурд.