The first implementation I wrote actually did this. I killed it because I thought the __toString benefits outweighed the object reusability in practice. Didn't think about using this as a service. Trying to decide if making this a service is overkill for what it is, though...