fopen(), fwrite() und fclose() sind die deine Freunde.
Ergänzend zu dem bereits verlinkten Formmailer sind das etwa 3 Zeilen extra Code.file_put_contents() ist nur eine.
Wenn das File sowieso einfach hart ersetzt werden soll ist das richtig ja - allerdings ist der Lerneffekt beim Verwenden der einzelnen Funktionen größer.
Die Einzelfunktionen haben zudem den Vorteil, dass sie bei wiederholten Schreibvorgängen schneller sind - z.B. wenn man eine Import-Routine schreibt, die z.B. ein CSV in Liste an SQL-Statements umformt oder ähnliches und diese per Schleife durchläuft und jede Zeile einzeln schreibt.
Ebenso hat es Vorteile, wenn man den Fileinhalt zuvor lesen muss und dann in dasselbe File schreiben (möglicherweise an einer bestimmten Stelle).
Aber bei einem "knall alles rein und überschreibe den Rest"- oder "häng' mein Zeug einfach hinten an"-Vorgang ist file_put_contents() die bessere Lösung, ja.