Разница между файлом, file_get_contents и fopen в PHP

Я новичок в PHP, и я не совсем уверен: в чем разница между функциями file() , file_get_contents() и fopen() , и когда я должен использовать один над другим?

Первые два file и file_get_contents очень похожи. Оба читают полный файл, но file читает файл в массив, а file_get_contents читает его в строку. Массив, возвращаемый file будет разделен символом новой строки, но каждый элемент все равно будет прикреплен к завершающей строке новой строки, поэтому вам все равно нужно следить за этим.

Функция fopen делает что-то совершенно другое – открывается файловый дескриптор, который функционирует как поток для чтения или записи файла. Это гораздо более низкоуровневая функция, простая обертка вокруг функции fopen , и просто вызов fopen ничего не сделает, кроме как открыть поток.

После того, как вы откроете дескриптор файла, вы можете использовать другие функции, такие как fread и fwrite чтобы манипулировать данными, к которым относится дескриптор, и как только вы закончите, вам нужно будет закрыть поток, используя fclose . Это дает вам более точный контроль над файлом, который вы читаете, и если вам нужны необработанные двоичные данные, вам может понадобиться их использовать, но обычно вы можете придерживаться функций более высокого уровня.

Итак, напомню:

  • file – считывает содержимое всего файла в массив строк.
  • file_get_contents – считывает содержимое всего файла в строку.
  • fopen – открывает дескриптор файла, который можно манипулировать с помощью других функций библиотеки, но не выполняет чтение или запись.

file – считывает весь файл в массив
file_get_contents – считывает весь файл в строку
fopen – открывает файл или URL-адрес