Hola,
Tal como yo entiendo el MVc, el controlador llama a la vista y la vista puede llamar tanto al controlador como al modelo. Por su parte, el controlador tambien puede llamar al modelo. Y creo que es el modelo el que no puede llamar a ninguno de los otros 2.
Es decir, desde mi punto de vista no estaria mal hacer un:
Código PHP:
$smarty->assign('impuesto',$objImp->costoImp($precio));
dentro de la vista. El unico problema de esto es que la vista debe conocer al modelo. Y un cambio en el modelo puede implicar un cambio en la vista (en todas las vistas). Pero si lo dejas en el controlador, es el controlador el que debe conocer al modelo, y es el que cambiaria si cambia el modelo. La independencia total no existe, en mi opinion.
Si no tienes problemas con el ingles, podrias revisar
www.phppatterns.com (vitxo, no eres el unico fan de harryF
) o darte una vuelta por de foro de "Advanced PHP" de
www.sitepointforums.com , donde se debaten tambien este tipo de asuntos.
Saludos.