Podivné chování Nette\ArrayHash
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- MzK
- Člen | 127
Verze Nette: 2.0.6
<?php
class UsersModel {//UsersModel (zkraceny)
public static function createHashPass($pass) {
return md5($pass.'key');
}
public static function save($d) {
$d['pass'] = UsersModel::createHashPass($d['pass']); //do db ukladam HASH
dibi::query('INSERT INTO users ', $d);
return dibi::getInsertId();
}
}
?>
<?php
//Presenter
public function UsersSubmited(Form $form) {
$d = $form->getValues(); //v $d mám pole Nette\ArrayHash.
//ZDE dump($d) vypise jeste puvodni heslo
$id = UsersModel:save($d); //ty data chci ulozit do databaze
//ZDE dump($d) vypise HASH hesla. Jak muze metoda ovlivnit externi promenne?
}
?>
Pokud převedu ArrayHash na klasické pole $d = (array) $d;, tak to funguje
dobře (změny v metodě se neprojeví mimo metodu).
Nevím jestli je to bug, nebo featura, dostavil se WTF pocit (jak může metoda
ovlivnit proměnné mimo metodu).