Итераторы в PHP5

  • Автор темы Автор темы ReMaRk
  • Дата начала Дата начала

ReMaRk

Новичок
Итераторы в PHP5

Кто-нибудь замарачивался с итераторами в пятой версии PHP? Дайте ссылок на ресурсы (желательно на русском) где об это написано подробнее чем это есть в стандартной документации, где практически ничего не документировано.

P.S. Ссылку на http://cvs.php.net/pecl/spl/ давать не надо.
 
Макс
Спасибо за ссылку - интересная =)

Но все же хочется на человеческом уровне понять про итераторы (что такое итератор - знаю), как ими пользоваться представляю и некоторые вещи получается применять на практике, но остальное дремучий лес!!!
 
А что еще не понятно?
Была статья на zend.com там как раз был пример который ничего не делает, а выводит что он делает из него + рефлектора я все понял про итераторы
 
Profic
непонятно как совмещать эти итераторы для достижения своих целей.
Например мне надо прочитать некую директорию используя итераторы так, чтоб на первом уровне мне попадали все поддиректории, на втором поддиректории с определенным именем, а на третьем - файл с определенным расширением. Как мне это сделать - ума не приложу!!!
 
Никак, естественно.
директорию надо прочитать в массив, отсортировать как нужно, а потом итераторами своими как угодно по этому массиву ходить
 
Фанат
Какая разница в данной ситуации?! Ходить по директориям при помощи итераторов или по массиву?
 
Например мне надо прочитать некую директорию используя итераторы так, чтоб на первом уровне мне попадали все поддиректории, на втором поддиректории с определенным именем, а на третьем - файл с определенным расширением. Как мне это сделать - ума не приложу!!!
DirectoryIterator :D
 
lucas
Да, но при этом надо еще фильтры применять! Надо скрестить их, но очень грамотно. Пока что у меня не получилось
 
ему не прочитать надо.
ему надо прочитать непременно с использованием итераторов.
без использования итераторов будет не кошерно.
 
Re: Итераторы в PHP5

Автор оригинала: ReMaRk
Кто-нибудь замарачивался с итераторами в пятой версии PHP?
Ссылок не дам, но поумничать случая не упущу. Насколько мне кажется, итераторы нужны для создния объекто-ориентированного интерфейса для доступа, скажем так, к массивам.

И, собственно, все.

-~{}~ 28.06.05 18:39:

Описание шаблона
Итератор можно увидеть. Тоже, наверное, объясняет кое-кто.
 
robocomp
Насколько мне кажется, итераторы нужны для создния объекто-ориентированного интерфейса для доступа, скажем так, к массивам.
Не согласен, при чем здесь массив и directoryIterator, который шастает по файловой системе?

-~{}~ 28.06.05 20:43:

Фанат
при чем здесь кошерно, ни кошерно?? Дело в том, что зачем кучу кода плодить для определенной задачи, когда для нее уже есть инструменты, которые вполне можно использовать, другое дело - не получается из-за не знания (не понимания). Вот я и хочу ими воспользоваться, потому что они то, что мне надо.
Для чего, скажите мне, итераторы были придуманы, чтоб на полке пылились???
 
ReMaRk
надо прочитать некую директорию используя итераторы так, чтоб на первом уровне мне попадали все поддиректории, на втором поддиректории с определенным именем, а на третьем - файл с определенным расширением. Как мне это сделать - ума не приложу!!!

Фанат
Никак, естественно.
директорию надо прочитать в массив, отсортировать как нужно, а потом итераторами своими как угодно по этому массиву ходить
Фанат, я бы заменил слово "ествественно" на "насколько мне известно". =)

PHP:
<?php

class myFilterIterator extends FilterIterator {
	function accept() {
		switch($this->getDepth()) {
			case 1 :
				return $this->isDir();

			case 2 :
				return $this->isDir() && preg_match('~^[\.\~].+~', $this->getFilename());

			case 3 :
				return $this->isFile() && '.php' == substr($tmp=$this->getFilename(), strrpos($tmp,'.'));
		}

		return false;
	}
}

foreach(new myFilterIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator('./'))) as $D) {
	echo $D->getPath();
	echo "\t";
	echo $D->getFilename();
	echo "\n";
}

?>
 
Сверху