Manchmal soll Logik auf Daten einer Map zugreifen können aber nicht ändern können. Ich habe für meine State-Implementierung Action-Dispatcher eingeführt, die Daten der Action anpassen dürfen und dafür auch Daten aus dem State zum Abgleich nutzen sollen, aber an der Stelle sollen sie nicht die Möglichkeit haben den State selbst zu ändern, weil ich an der Stelle keine Änderungen tracke. Action-Dispatcher sollen schnell und leichtgewichtig sein.
Map<String, Object> stateUnmod = Collections.unmodifiableMap(this.state);
for (ActionDispatcher dispatcher: this.dispatchers) {
dispatcher.dispatch(action, stateUnmod);
}
Zum Glück kann man mit Collections sich schnell eine unmodifiable Map erstellen. Was das für die Performance bedeutet habe ich noch nicht getestet, aber ich gehe davon aus, dass das Tracken und Behandeln von Änderungen am State am Ende auf wendiger wäre.
Wer auch das Problem hat, dass nur / also Routing bei einer der indexAction-Methode funktioniert und jede Änderung oder weiter Methode führt zu einem 404 Fehler, dem kann Helfen in der AppKernel.php das appBundle noch mal auf true zu setzen.
Das wird hier gut erklärt http://stackoverflow.com/questions/11932756
$kernel = new AppKernel('prod', true);