Přechod projektu z nette 095 → 2

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mcmatak
Člen | 490
+
0
-

Pokusím se do tohoto vlákna dávat svoje postřehy s přechodem celkem rozsáhlého projektu z 095 do 2.

Spousty věcí už mám vyřešených a nevzpomenu si na ně, ale stále mi to ještě hlásí chyby tak na co si vzpomenu sem dám.

  1. {include #parent} BC BREAK, stále nevidí okolní proměnné, dříve viděl
  2. projel jsem projekt tím nástrojem co by měl pomoci s přechodem jak mění namespaces a deprecated funkce, nicméně pokud pokud v sabloně používáte něco jako <div n:foreach=„$form->getComponents(TRUE, ‚Nette\Forms\HiddenField‘) as $hiddenControl“>{$hiddenControl->control}</div> tak to neprojde
  3. form vrací ArrayHash ne array no to je taky věc, (array) pokud se nepletu tak nepomůže, protože pokud má arrayhash zanoření, tak ty se nepřetypují (takže teď jsem se sekl na této věci a nevím co s tím)

moje současné řešení

<?php
function toArray(\Nette\ArrayHash $arrayHash) {
	$a = array();
	foreach($arrayHash as $k => $v) {
		if ($v instanceof \Nette\ArrayHash) {
			$a[$k] = toArray($v);
		}
		else {
			$a[$k] = $v;
		}
	}
	return $a;
}

?>

4. Určitě bych projekt prohledali na výskyt zavinacu v šablonách @{ ted uz je nepotřebujete
5. Stejně tak Environment:: použití nebude moc košér

Editoval mcmatak (2. 2. 2012 1:27)

David Grudl
Nette Core | 8108
+
0
-

Díky, že ses do toho pustil, tohle bude pro spoustu lidí užitečné.

ad {include #parent} okolní proměnné by vidět měl (příklad se přeloží na get_defined_vars), nemůžete to být třeba keší?

ad ArrayHash: tohle asi nebyla šťastná feature, takže jsem implementoval, že Form::getValues(TRUE) nyní vrací array().

mcmatak
Člen | 490
+
0
-

Škoda ze sem se do toho nepustil dříve, ted uz mám vse vyřešené a v podstatě jsem si výtiskl seznam stovek souboru a nakonec jsem jeden po druhem prosel. Problém u mne bude hlavně mraky vlastních nástaveb nad nette, vlastní toggle, vlastní rendery, obecne form šablony, atd