Many people know this article: more on getters and setters. I think it does a convincing job of portraying the evil side of getters/setters. I've also tested it by trying to convert an existing project (unfinished) to code without getters/setters. It worked. Code readability improved greatly, less code and I've even managed to get rid of getters/setters where I initially thought they really were necessary. Except for one place.
Getting models to the view part is where I think this approach misses the point. In the article the author uses a builder to export the model. The problem is: there's just as many control over what is put into the builder as what you would have gotten with getters. Yes it hides the implementation, the way it is represented in the model. But getters don't get out of the model something very different from what was put in there. If you create a Money object passing '5' through the constructor, money.getAmount() won't return this converted to some other currency or as an array with one element '5' in it.
What you set you get. And through the view we set values, and those values we expect when we ask them (get) from an object that is supposed to hold what we set in the first place. A builder to export these just expects the same.
This is a bit long for a question. But I would like to be challenged on my view. Are getters and setters evil for transporting model-data to the view layer?
There are a lot of people who think getters/setters are not evil at all. This is also not what I would like to hear defended, as I think they DO are evil in other places than those I mentioned.