Da templates oft einen Kontextwechsel beinhalten, muss die Kontextgerechte Behandlung bereits im Template enthalten sein. Da siehts dann mit heredoc eher schlecht aus.
Dazu müsste der Platzhalter den Kontext kennen, in dem er sich befindet. htmlspecialchars() ist ja nicht für alle Kontexte eines HTML-Dokuments geeignet, mitunter muss man mehrere Maskierungen schachteln.
Wenn es da nur irgendeine Templating-Engine gäbe, die das kann… achja, da fällt mir meine eigene Engine wieder ein 😛