File 오브젝트를 출력하는 Iterator를 구성한다고 가정 해 봅시다. 그런 반복자의 생성자에 보통 어떤 유형의 데이터를 제공합니까?Iterator를 구축하십시오.
- 사전 구성된 파일 오브젝트의 배열 또는
- 단순히 원본 데이터 (예를 들면 다차원 배열)과 반복되어 때 반복자 즉시 파일 객체를 생성 할 수?
편집 :
내 질문이 실제로 가능한 일반적으로, 표준했지만, 내 예는 다양한에 약간 일반적으로 해결하는 것, 그래서 좀 더 정교한 수 있습니다. 내가 말하는 File 객체는 실제로 데이터베이스의 파일 참조입니다. 이 두 테이블을 참조하십시오
folder
| id | folderId | name |
------------------------------------
| 1 | null | downloads |
file
| id | folderId | name |
------------------------------------
| 1 | 1 | instructions.pdf |
그들은 파일 시스템에 실제 폴더와 파일을 참조합니다.
이제 FileManager 객체를 만들었습니다. 이렇게하면 폴더 및 파일 목록을 반환 할 수 있습니다. 예를 들어 :
FileManager::listFiles(Folder $folder);
는 ... 데이터베이스에서 (FileReference 객체 오히려 그것을 생각 해 보 니, 나) File 객체의 반복자를 반환합니다.
그래서 내 질문에 귀결 것은 : 파일 관리자 객체가 때 listFiles의 Iterator를 (구축하는 경우)이 같은 (의사 코드) 뭔가를 할 것이다 :
listFiles(Folder $folder)
{
// let's assume the following returns an multidimensional array of rows
$filesData = $db->fetch($sqlForFetchingFilesFromFolder);
// let the Iterator take care of constructing the FileReference objects with each iteration
return FileIterator($filesData);
}
또는 (의사 코드) :
listFiles(Folder $folder)
{
// let's assume the following returns an multidimensional array of rows
$filesData = $db->fetch($sqlForFetchingFilesFromFolder);
$files = array();
for each($filesData as $fileData)
{
$files.push (new FileReference($fileData));
}
// provide the Iterator with precomposed FileReference objects
return FileIterator($files);
}
희망 사항은 약간 명확합니다.
File 객체는 실제로 파일 시스템 경로를 나타냅니다. 한 번에 실제 파일을 여는 것이 좋지 않을 것입니다. 그건 내 의도가 아니 었어. 내 질문을 업데이트했습니다. 자세한 내용은 내 확장 질문을 참조하십시오. 감사. –