Как применить функцию к списку файлов в ООП

Изучаю ООП и затормозил на следующем моменте.

У меня есть класс, который отвечает за вывод списка файлов. Пример

$files = new FilesList();
$filesList = $files->getFiles($currentPath);

Метод getFiles создает массив со списком файлов по пути $currentPath.

Например

[
  ['type' => 'file', 'name' => '1.jpg'], 
  ['type' => 'dir', 'name' => 'some_dir'], 
  ['type' => 'file', 'name' => '2.png']
]

Я могу вывести этот список просто через foreach.

foreach ($filesList as $file) {
    if (is_array(($file)) && isset($file['name'])) {
        echo sprintf('<div>%s</div>', $file['name']);
    }
}

Но теперь встала задача, напротив каждого файла добавить ссылки удалить, переименовать

Как в ООП решается подобная задача?

Я хочу создать новый класс, например, FilesTools.

Но не могу понять, как мне связать 2 класса теперь?

Буду благодарен за любые советы!


Ответы (1 шт):

Автор решения: Qwertiy

Тебе не надо 2 таких класса. Нужно нечто, что умеет получать список, удалять и переименовывать.

Если хочется делать методы нестатическими, можно в качестве состояния хранить genm в инстансе и дольше работать с ним.

Можно сделать два класса - один для каталога и один для файла. Тогда логично их наследовать от базового с общей функциональностью.

FsEntry
  name: string
  rename(newName: string): void
  delete(): void
  isSymLink(): boolean

Directory extends FsEntry
  getDirictories(): Directory[]
  getFiles(): File[]
  createDirectory(name: string, deep: boolean): boolean /* создана или уже была */

File extends FsEntry
  read(): byte[]
  write(data: byte[], flags: string): void
  isFifo(): boolean
→ Ссылка