Takie helpery to imo trochę naciąganie, jeżeli mówimy o mvc. Ja to robię w ten sposób, że powiedzmy model (klasa obrazka) ma metody getURL() i getThumbnailURL(), obiekty obrazków są przekazywane do widoku (np. w formie tablicy), a widok sobie te URLe wyciąga. Przykład dla Smarty:
Kopiuj
{foreach from=$obrazki item=obrazek}
<a href="{$obrazek->getURL()}">
<img src="{$obrazek->getThumbnailURL()}" alt="cośtam" />
</a>
{/foreach}
no i - WAŻNE - jakiekolwiek metody, działania na obiektach wywoływane z widoku nie powinny niczego już zapisywać w bazie, lub na dysku, a nawet zmieniać stanu obiektów. Poza tym oczywiście w bazie oraz w obiekcie trzymasz sobie tylko jakąś małą część nazwy pliku obrazka (np. ID), z której generujesz pełne urle miniaturki i obrazka.
Jeżeli już koniecznie robić helpery (jak ktoś ma alergię na pisanie w HTML), to właśnie powinien on być zintegrowany z widokiem (np. w Smarty można sobie dodać coś do katalogu plugins). Mogło by to wyglądać tak:
Kopiuj
{foreach from=$obrazki item=obrazek}
{makeimage big=$obrazek->getURL() thumb=$obrazek->getThumbnailURL() alt="cośtam"}
{/foreach}