When I call the buzzer outside my girlfriend's flat, she sometimes says *"I'll open you the door". I correct this to "I'll open the door for you".
I've never heard a native speaker say it the first way, which is why I think it's wrong. But I can't explain why.
There is a pattern in lots of English phrases that would suggest both are correct. A few common examples:
Give the keys to me before you go — Give me the keys before you go
I'll buy a coffee for you at the cafe — I'll buy you a coffee at the cafe
We sent a text to Martin on his birthday — We sent Martin a text on his birthday
The left-hand side is more formal, and the right-hand side is more common in everyday speech.
What do you call this pattern?
What makes the 'open-the-door' sentence an exception?