- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
class someClass {
protected $map = array();
public function __construct(Array $data)
{
$this->map = $this->generateMap($data);
}
protected function generateMap(Array $data)
{
$map = array();
foreach ($data as $key => $value) {
...
$map[$otherSomeKey] = $otherSomeValue;
...
}
$this->map = $map;
}
}
юзай строгое сравнение ===
удачного говнокода
Из шестой строчки видно, что свойству, полю map присваивается результат работы функции-члена, метода generateMap, при этом мы видим: на самом деле generateMap ничего не возвращает. Это ошибка, вероятно, случайна, но грубая. Например C++ словит такую ошибку на этапе компиляции, указав, что не может положить ничего во что-то. А в PHP такой код возник, видимо, по той причине, что PHP не отловил на этапе выполнения подобную вопиющую несправедливость по отношению к честному полю map.
Другое дело, что данная ситуация абсурдна с точки зрения языка высокого уровня. Метод НЕ ВОЗВРАЩАЕТ ничего, а вовсе не ВОЗВРАЩАЕТ НИЧЕГО. И присваивание в данной ситуации абсурдно, должно было бы ловиться при трансляции.
В паскле мы бы наблюдали даже различие организации кода: процедура или функция. Упрощение С сводящие всё к наличию return это упрощение записи.
Если бы функция-член возвращала NULL и размещала его в поле, которое определялось бы массивом, - такая ошибка была бы следствием отсутствия строгой типизации. Данная ситуация - это уже абсурд.