| |
$filename — обычный файл.
bool is_dir(string $filename)
Возвращает true, если $filename — каталог.
bool is_link(string $filename)
Возвращает true, если $filename — символическая ссылка.
Глава 15. Работа с файлами 255
Определение возможности доступа
В PHP есть еще несколько функций, начинающихся с префикса is_. Они довольно
интеллектуальны, поэтому рекомендуется использовать их перед "опасными" откры-
тиями файлов.
bool is_readable(string $filename)
Возвращает true, если файл может быть открыт для чтения.
bool is_writeable(string $filename)
Возвращает true, если в файл можно писать.
bool is_executable(string $filename)
Возвращает true, если файл — исполняемый.
Определение параметров файла
array stat(string $filename)
Функция собирает вместе всю информацию, выдаваемую операционной системой для
указанного файла, и возвращает ее в виде массива. Этот массив всегда содержит
сле-
дующие элементы с указанными ключами:
0 — устройство;
1 — номер узла inode;
2 — атрибуты защиты файла;
3 — число синонимов ("жестких" ссылок) файла;
4 — идентификатор uid владельца;
5 — идентификатор gid группы;
6 — тип устройства;
7 — размер файла в байтах;
8 — время последнего доступа в секундах, прошедших с 1 января 1970 года;
9 — время последней модификации содержимого файла;
10 — время последнего изменения атрибутов файла;
11 — размер блока;
12 — число занятых блоков.
Как мы видим, в этот массив помещается информация, которая доступна в системах
Unix. Под Windows многие поля могут быть пусты (например, в ней у файлов нет
владельца, а значит, нет и идентификатора владельца файла и группы). Обычно они
бывают совершенно бесполезны при написании сценариев.
Если $filename задает не имя файла, а имя символической ссылки, то все-таки бу-
дет возвращена информация о том файле, на который ссылается эта ссылка (а не о
Часть IV. Стандартные функции PHP 256
ссылке). Для получения информации о ссылке можно воспользоваться вызовом
lstat(), имеющим точно такой же синтаксис, что и stat().
Специализированные функции
Для того чтобы каждый раз не возиться с вызовом stat() и разбором выданного
массива, разработчики PHP предусмотрели несколько простых функций, которые сра-
зу возвращают какой-то один параметр файла. Кроме того, если объекта (обычно
файла), для которого вызвана какая-либо из ниже перечисленных функций, не суще-
ствует, эта функция возвратит false.
int fileatime(string $filename)
Возвращает время последнего доступа (access) к файлу (например, на чтение).
Время
выражается в количестве секунд, прошедших с 1 января 1970 го-да. Если файл не
обнаружен, возвращает false.
int filemtime(string $filename)
Возвращает время последнего изменения файла или false в случае отсутствия фай-
ла.
int filectime(string $filename)
Возвращает время создания файла.
int filesize(string $filename)
Возвращает размер файла в байтах или false, если файла не существует.
int touch(string $filename [, int $timestamp])
Устанавливает время модификации указанного файла $filename равным
$timestamp (в секундах, прошедших с 1 января 1970 года). Если второй параметр
не
указан, то подразумевается текущее время. В случае ошибки возвращается false.
Если файла с указанным именем не существует, он создается пустым.
Функции для работы
с именами файлов
Нам довольно часто приходится манипулировать с именами файлов. Например,
"прицепить" к имени слева путь к какому-то каталогу или, наоборот, из полной
спе-
цификации файла выделить его непосредственное имя. В связи с этим в PHP введены
несколько функций для работы с именами файлов.
string basename(string $path)
Выделяет основное имя файла из пути $path. Вот несколько примеров:
Глава 15. Работа с файлами 257
echo basename("/home/somebody/somefile.txt"); // выводит "somefile.txt"
echo basename("/"); // ничего не выводит
echo basename("/."); // выводит "."
echo basename("/./"); // также выводит "."
Обратите внимание на то, что функция basename() (да и все последующие) не про-
веряет существование файла. Она просто берет часть строки после самого правого
слэша и возвращает ее. С облегчением можно также сказать, что функция
basename() правильно обрабат
|
|