Простое создание файла
Нужно отметить, что в PHP есть несколько способов создания файлов. Каждый из них имеет свои особенности и используется для решения различных задач.Самым простым способом является использование функции touch (). Она применяется для установки времени последнего доступа к файлу. Если файл не существует, touch () создаст его. Принцип работы очень прост. Функция принимает три параметра: имя файла, время касания и время доступа в формате timestamp. Параметры времени являются необязательными.
//Создание файла в корневой директории сайта
if (touch($_SERVER['DOCUMENT_ROOT']. '/file.txt')) {
echo 'Создание файла прошло успешно';
} else {
echo 'Невозможно создать файл';
}
Универсальная функция fopen
Функция fopen () используется в PHP как для создания нового файла, так и для открытия уже существующего. Она возвращает дескриптор, который может использоваться в ряде других функций. fopen () в первом параметре принимает имя файла, а во втором режим доступа. Режим доступа определяет: применимые операции, позицию файлового указателя, должен ли файл создаваться в случае отсутствия и нужно ли отбрасывать его содержимое.Режим доступа задается строкой, состоящей из управляющих символов. Функция fopen () вернет логическое значение false в случае невозможности открытия файла. Например, если указан режим доступа «чтение», но права, заданные для файла, не позволяют осуществлять данную операцию.
Список режимов доступа к файлу:
Значение | Чтение | Запись | Усечение | Указатель | Создание |
---|---|---|---|---|---|
r | Да | Нет | Нет | Начало | Нет |
r+ | Да | Да | Нет | Начало | Нет |
w | Нет | Да | Да | Начало | Да |
w+ | Да | Да | Да | Начало | Да |
a | Нет | Да | Нет | Конец | Да |
a+ | Да | Да | Нет | Конец | Да |
x | Нет | Да | Нет | Начало | Да |
x+ | Да | Да | Нет | Начало | Да |
c | Нет | Да | Нет | Начало | Да |
с+ | Да | Да | Нет | Начало | Да |
Внесем уточнения в приведенную выше таблицу. Под усечением понимается отбрасывание уже существующего в файле содержимого. Таким образом, режим w и w+ подразумевают, что в файл будет записано новое содержимое, в то время как a и a+ устанавливают указатель в конец файла, что вызывает добавление информации.
Как вы могли заметить режимы w и w+ схожи с, x и x+. Между ними всё же есть отличие. Режимы x возвращают false если файл уже существует, но в случае отсутствия — создают его. Нужно быть очень аккуратным при работе с режимами c и с+. Они устанавливают указатель на начало файла, но не затирают предыдущее содержимое. Новые строки будут заменять прежний контент.
//Создаем файл в режиме записи
$descriptor = fopen($_SERVER['DOCUMENT_ROOT']. '/file.txt', 'w');
if ($descriptor !== null) {
//Записываем короткий текст в файл
fwrite($descriptor, 'Жизнь требует движения (Аристотель)');
fclose($descriptor);
} else {
echo 'Невозможно создать файл';
}
Заметка!
У функции fopen() есть третий параметр логического типа, который по умолчанию устанавливается в false. Он связан с настройками интерпретатора PHP. Опция include_path конфигурационного файла php.ini указывает директорию подключаемых файлов. Если установить третий параметр fopen() в true, поиск и создание файлов будет вестись в этой директории.
У функции fopen() есть третий параметр логического типа, который по умолчанию устанавливается в false. Он связан с настройками интерпретатора PHP. Опция include_path конфигурационного файла php.ini указывает директорию подключаемых файлов. Если установить третий параметр fopen() в true, поиск и создание файлов будет вестись в этой директории.
{reklama}
Создание временного файла
Ряд задач, решаемых в PHP, требуют создания временного хранилища информации. Для этого могут быть использованы временные файлы. Функция tpmfile() не принимает никаких параметров. Она возвращает дескриптор файла, который, по сути, является областью оперативной памяти. С этим дескриптором работают все те же функции, что и с обычными файлами. Временный файл будет уничтожен после завершения выполнения скрипта или при вызове функции fclose().//Создаем временный файл, записываем в него фразу,
//перемещаем указатель в начало и выводим текст
//в браузер
$descriptor = tmpfile();
fwrite($descriptor, 'Тестовая фраза');
rewind($descriptor);
echo fgets($descriptor);
Также существует возможность создания реального файла с случайно генерируемым именем. За это отвечает функция tempnam(). Ей в первом параметре необходимо указать директорию размещения, а во втором префикс имени файла. Функция вернет полное сгенирированное имя. Его можно использовать для дальнейших операций с помощью fopen(). Такой файл будет существовать и после завершения работы скрипта. Если он не потребуется в дальнейшем, используйте функцию unlink() для удаления.//Генерируем случайный файл и выводим его имя
echo tempnam($_SERVER['DOCUMENT_ROOT'], 'rand-');
Одновременное создание и запись
В PHP существует возможность заменить последовательность операций создания файла, записи информации и освобождения дескриптора, всего одним вызовом. Для этого используйте функцию file_put_contents(). Передайте ей два параметра: имя файла и данные для записи. Если файл не существует, он будет создан.//Используем специальную функцию для одновременного
//создания файла и записи в него информации
file_put_contents(
$_SERVER['DOCUMENT_ROOT']. '/file.txt',
'Работать без дескрипторов бывает удобно'
);
Заметка
Функция file_put_contents() рассматривается детально в следующих уроках данного учебного курса. Она обладает более широким функционалом, который раскрывается в ином контексте.
Функция file_put_contents() рассматривается детально в следующих уроках данного учебного курса. Она обладает более широким функционалом, который раскрывается в ином контексте.