потому что в объявленном неймспейсе нет такого класса.
нужно либо указывать для него полный неймспейс (в данном случае это корневой), либо импортировать через use.
fopen и подобные имеют смысл только, если нужна длительная или индивидуальная работа с файлом.
для одноразовой операции вполне годится file_put_contents.
потому что это удобно.
причина такая же почему классы пишут в отдельных файлах, а не одном: открываешь файл и сразу все видишь, а не скролишь/ищешь.
когда проектируешь/тестируешь, миграции вообще не нужны, пилишь базу напрямую.
когда нашел приемлемый вариант, написал миграции. или вообще сгенерировал их автоматом из существующей базы.