Я новичок в 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-адрес