Всем привет дорогие друзья и сегодня мы рассмотрим основные функции для работы с файловой системой которые предлагает нам PHP. Все мы их конечно рассматривать не будем , а только самое основное и полезное. Поехали!
Функция file_put_contents() отвечает за создание и запись данных в файл, рассмотрим подробнее:
file_put_contents(__DIR__.'/text.txt','');//Создаем файл text.txt
$data = "Доброе утро!";
file_put_contents(__DIR__.'/text.txt',$data);// Создаем файл text.txt и записываем туда данные
file_put_contents(__DIR__.'/text.txt',$data."\r", FILE_APPEND | LOCK_EX);// Создаем файл text.txt и дописывает туда данные
Как видите функция file_put_contents может принимать три параметра file_put_contents(Полный путь и название нового файла, Данные для записи в файл, флаг).
Первые два параметра обязательные, поэтому даже если вы хотите создать файл ничего туда не записывая. Вам все равно придется указать второй параметр в виде пустой строки. Третьим параметрам являются так называемые флаги. FILE_APPEND отвечает за дописывание в файл данных , а LOCK_EX - блокирует файл во время записи.
Да если кто не знает , то __DIR__ - это полный путь к текущему каталогу где выполняется данный код.
Едем дальше, с созданием и записью мы разобрались теперь перейдем непосредственно к чтению файлов. Для этого существует функция file_get_contents():
$text = file_get_contents(__DIR__.'/text.txt');
echo $text;
Как видите мы благополучно считали данные с ранее созданного файла. file_get_contents(Полный путь к файлу)
Отмечу что с помощью данной функции мы можем считывать данные с сайтов, указав в качестве пути их домен. К примеру
$text = file_get_contents('https://twitter.com/');
echo $text;
Как видите у нас подгрузились элементы данного сайта, если же мы хотим посмотреть его исходный код , то достаточно заэкранировать специальные символы:
echo htmlspecialchars($text);
Такой подход бывает используют при парсинге сайтов.
Теперь перейдем к удалению файлов. Для этого используется функция unlink()
unlink(__DIR__.'/text.txt');
Здесь мы удалили наш файл text.txt , но тут я хочу вас предостеречь если мы повторно выполним данную команду у нас возникнет ошибка. Почему? Правильно, потому что при повторном использовании функции удаления, такого файла у нас уже не будет и именно из за этого произойдет ошибка.
Это можно исправить написав условие для проверки на существование данного файла.
if(file_exists(__DIR__ . '/text.txt')) {
unlink(__DIR__ . '/text.txt');
}
здесь с помощью функции file_exists(путь к файлу) мы проверяем существует ли файл с таким путем. Если да , то функция возвращает нам true и условие if выполняется удаляя данный файл , а если же нет ,возвращается false и данное условие уже не выполняется, так как файла с таким путем уже нет.
Создание папок осуществляется с помощью команды mkdir(Полный путь)
mkdir(__DIR__."/css");
мы создали в текущей директории папку с названием css теперь чтобы к примеру в папке css создать файл style.css, мы можем воспользоваться переходами по папкам.
chdir(__DIR__."/css");
file_put_contents('style2.css','');
Функции chdir() передается путь относительно которого мы сможем создавать новые файлы и папки.
Да и вот что еще, если мы захотим создать папку в директории где уже есть папка с таким же названием у нас возникнет ошибка. Здесь опять надо проверить на существование в директории папки по пути:
if(!is_dir(__DIR__.'/css')) {
mkdir(__DIR__ . '/css');
}
Функция is_dir(путь) проверяет существует ли директория с заданным путем . В нашем условии говорится если директория не существует , то мы создаем ее.
За удаление директорий в php отвечает функция rmdir(путь):
if(is_dir(__DIR__.'/css')) {
rmdir(__DIR__ . '/css');
}
Функция rmdir() удаляет папку причем папка на момент удаления должна быть абсолютно пуста иначе возникнет ошибка.
Чтобы проверить содержимое папки мы можем воспользоваться функцией glob()
print_r(glob(__DIR__.'/css/*', 0));
Здесь функция glob() возвращает массив значений полных путей файлов и папок которые содержаться в директории css. Следовательно когда количество элементов в массиве станет равно нулю только тогда мы сможем удалить данную директорию.
Общую суть я думаю вы уловили. На этом я данную статью подвожу к концу. Надеюсь она была для вас содержательна и полезна. Я желаю вам успехов и удачи! Пока.