streamWrapper::dir_readdir
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
streamWrapper::dir_readdir
Референца за `streamwrapper.dir-readdir.php` со подобрена типографија и навигација.
streamWrapper::dir_readdir
(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)
streamWrapper::dir_readdir — Прочитај запис од рачката на директориумот
= NULL
Овој метод се повикува како одговор на readdir().
Параметри
Оваа функција нема параметри.
Вратени вредности
Треба да врати string претставува следната датотека, или
false ако нема следна датотека.
Враќање true or false ќе има исто дејство на сигнализирање дека нема следна датотека. Сепак, враќањето true се обесхрабрува и false треба да се користи за сигнализирање на оваа состојба наместо тоа.
Забелешка:
Не-булова вредност ќе биде претворена во string.
Errors/Exceptions
Емитува
E_WARNING ако повикот на овој метод не успее (т.е. не е имплементиран).
Примери
Пример #1 Набројување датотеки од tar архиви
<?php
class streamWrapper {
protected $fp;
public function dir_opendir($path, $options) {
$url = parse_url($path);
$path = $url["host"] . $url["path"];
if (!is_readable($path)) {
trigger_error("$path isn't readable for me", E_USER_NOTICE);
return false;
}
if (!is_file($path)) {
trigger_error("$path isn't a file", E_USER_NOTICE);
return false;
}
$this->fp = fopen($path, "rb");
return true;
}
public function dir_readdir() {
// Extract the header for this entry
$header = fread($this->fp, 512);
$data = unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1filetype/a100link/a100linkedfile", $header);
// Trim the filename and filesize
$filename = trim($data["filename"]);
// No filename? We are the end of the archive
if (!$filename) {
return false;
}
$octal_bytes = trim($data["size"]);
// Filesize is defined in octects
$bytes = octdec($octal_bytes);
// tar rounds up filesizes up to multiple of 512 bytes (zero filled)
$rest = $bytes % 512;
if ($rest > 0) {
$bytes += 512 - $rest;
}
// Seek over the file
fseek($this->fp, $bytes, SEEK_CUR);
return $filename;
}
public function dir_closedir() {
return fclose($this->fp);
}
public function dir_rewinddir() {
return fseek($this->fp, 0, SEEK_SET);
}
}
stream_wrapper_register("tar", "streamWrapper");
$handle = opendir("tar://example.tar");
while (false !== ($file = readdir($handle))) {
var_dump($file);
}
echo "Rewinding..\n";
rewind($handle);
var_dump(readdir($handle));
closedir($handle);
?>Горниот пример ќе прикаже нешто слично на:
string(13) "construct.xml" string(16) "dir-closedir.xml" string(15) "dir-opendir.xml" string(15) "dir-readdir.xml" string(17) "dir-rewinddir.xml" string(9) "mkdir.xml" string(10) "rename.xml" string(9) "rmdir.xml" string(15) "stream-cast.xml" string(16) "stream-close.xml" string(14) "stream-eof.xml" string(16) "stream-flush.xml" string(15) "stream-lock.xml" string(15) "stream-open.xml" string(15) "stream-read.xml" string(15) "stream-seek.xml" string(21) "stream-set-option.xml" string(15) "stream-stat.xml" string(15) "stream-tell.xml" string(16) "stream-write.xml" string(10) "unlink.xml" string(12) "url-stat.xml" Rewinding.. string(13) "construct.xml"