Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
// переходим по абсолютному пути 
chdir("./somathing"); // переходим в подкаталог текущего каталога 
chdir("something"); // то же самое 
chdir(".."); // переходим в родительский каталог 
chdir("~/data"); // переходим в /home/ПОЛЬЗОВАТЕЛЬ/data (для Unix) 
string getcwd() 
Возвращает полный путь к текущему каталогу, начиная от "корня" (/). Если такой 
путь не может быть отслежен (это иногда бывает в Unix из-за того, что права на 
чте- 
ние для родительских каталогов могут быть сняты), вызов "проваливается" и 
возвра- 
щает false. 
Эта функция появилась в PHP совсем недавно. Так что если ее не окажется в 
вашей версии, обновите ее поскорее, либо напишите заменитель (что не так-то 
просто). 
Работа с записями 
Дальше описываются функции, которые позволяют узнать, какие объекты находятся 
в указанном каталоге. Например, с их помощью можно вывести содержимое текуще- 
го каталога. Механизм работы этих функций базируется примерно на тех же принци- 

пах, что и применяемых для файловых операций: сначала интересующий каталог от- 
крывается, затем из него производится считывание записей, и под конец каталог 
нужно закрыть. Правила интуитивно понятны и, наверное, хорошо вам знакомы. 
int opendir(string $path) 
Открывает каталог $path для дальнейшего считывания из него информации о фай- 
лах и подкаталогах и возвращает его идентификатор. Дальнейшие вызовы 
readdir() с идентификатором в параметрах будут обращены именно к этому ката- 
логу. Функция возвращает false, если произошла ошибка. 

Часть IV. Стандартные функции PHP 270 
string readdir(int $handle) 
Считывает очередное имя файла или подкаталога из открытого ранее каталога с 
идентификатором $handle и возвращает его в виде строки. Порядок следования фай- 

лов в каталоге зависит от операционной системы — скорее всего, он будет 
совпадать 
с тем порядком, в котором эти файлы создавались, но не всегда. Вместе с именами 

подкаталогов и файлов будут также получены два специальных элемента: это . 
(ссылка на текущий каталог) и .. (ссылка на родительский каталог). В 
подавляющем 
большинстве случаев нам нужно их игнорировать, что и сделано в примере из лис- 
тинга 16.1 при помощи инструкции continue. 
PHP версии 3 позволял опускать параметр $handle — в этом случае, кажется, 
подразумевался последний открытый каталог. Сценарий "собирался с силами", 
"вздыхал" и… кое-как работал. PHP версии 4 более строг: в нем вы обязатель- 
но должны указывать параметр $handle для функции readdir(), в против- 
ном случае вам гарантированы сюрпризы. 
В случае, если в каталоге все файлы уже считаны, функция возвращает ложное зна- 

чение. Но не позволяйте себе привыкнуть к конструкции такого вида: 
$d=opendir("somewhere"); 
while($e=readdir($d)) { . . .} 
Она заставит цикл прерваться в его середине в случае обнаружения файла с именем 

"0", чего нам бы, конечно, не хотелось. Вместо этого пользуйтесь следующим 
мето- 
дом: 
$d=opendir("somewhere"); 
while(($e=readdir($d))!==false) { . . .} 
Оператор !== позволяет точно проверить, была ли возвращена величина false. 
void closedir(int $handle) 
Закрывает ранее открытый каталог с идентификатором $handle. Не возвращает ни- 
чего. В принципе, можно и не закрывать каталоги, т. к. это делается 
автоматически 
при завершении программы, но лучше все-таки такой легкостью не обольщаться. 
void rewinddir(int $handle) 
"Перематывает" внутренний указатель открытого каталога на начало. После этого 
можно воспользоваться readdir(), чтобы заново начать считывать содержимое ка- 
талога. 
Пример: печать дерева каталогов 
В заключение приведу пример программы, которая рекурсивно распечатывает список 
всех каталогов (доступных сценарию) в вашей системе, начиная от корневого. 

Глава 16. Работа с каталогами 271 
Листинг 16.1. Печать дерева каталогов в файловой системе 

		
 
<<-[Весь Текст]
Страница: из 287
 <<-