- 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;
}
}
korchasa 27.08.2009 07:51 # +1
guest 27.08.2009 10:17 # −6
юзай строгое сравнение ===
удачного говнокода
Kuros 27.08.2009 11:12 # −1
guest 27.08.2009 11:07 # −2
guest 27.08.2009 11:34 # 0
guest 27.08.2009 12:59 # −1
cheef 27.08.2009 11:37 # 0
interested 27.08.2009 13:57 # −1
TWINc 27.08.2009 15:57 # −1
interested 27.08.2009 16:48 # +2
Из шестой строчки видно, что свойству, полю map присваивается результат работы функции-члена, метода generateMap, при этом мы видим: на самом деле generateMap ничего не возвращает. Это ошибка, вероятно, случайна, но грубая. Например C++ словит такую ошибку на этапе компиляции, указав, что не может положить ничего во что-то. А в PHP такой код возник, видимо, по той причине, что PHP не отловил на этапе выполнения подобную вопиющую несправедливость по отношению к честному полю map.
TWINc 27.08.2009 16:59 # −2
striker 28.08.2009 02:27 # 0
interested 28.08.2009 10:48 # +3
Другое дело, что данная ситуация абсурдна с точки зрения языка высокого уровня. Метод НЕ ВОЗВРАЩАЕТ ничего, а вовсе не ВОЗВРАЩАЕТ НИЧЕГО. И присваивание в данной ситуации абсурдно, должно было бы ловиться при трансляции.
В паскле мы бы наблюдали даже различие организации кода: процедура или функция. Упрощение С сводящие всё к наличию return это упрощение записи.
Если бы функция-член возвращала NULL и размещала его в поле, которое определялось бы массивом, - такая ошибка была бы следствием отсутствия строгой типизации. Данная ситуация - это уже абсурд.
interested 28.08.2009 11:48 # 0
Говногость 31.08.2009 16:33 # 0