' . __FUNCTION__ . "에서 디렉토리 생성 실패:{$path}"); } } } final protected function isFileType_FileTrait(string $file_ext, string $type = "img"): bool { switch ($type) { case "audio": $exts = ['wav', 'mp3']; break; case "video": $exts = ['mov', 'avi', 'mp4']; break; case "img": default: $exts = ['jpg', 'jpeg', 'png', 'gif', 'webp']; break; } return in_array($file_ext, $exts); } // 디렉토리에 속한 파일 List final protected function getFiles_FileTrait(string $path, string $type = "img"): array { // 디렉토리에서 파일 목록 가져오기 $files = []; foreach (scandir($path) as $file_name) { // 확장자가 이미지 형식인지 확인 $file_ext = pathinfo($path . DIRECTORY_SEPARATOR . $file_name, PATHINFO_EXTENSION); if ($this->isFileType_FileTrait($file_ext, $type)) { $files[] = $file_name; } } return $files; } final protected function getUniqueName_FileTrait(string $path, string $file_name): string { $fileExtension = pathinfo($file_name, PATHINFO_EXTENSION); $fileBaseName = pathinfo($file_name, PATHINFO_FILENAME); $newFilename = $file_name; $counter = 1; // 중복된 파일명이 존재하는지 확인 while (file_exists($path . DIRECTORY_SEPARATOR . $newFilename)) { // 중복된 파일명이 존재하면 숫자를 추가하여 새로운 파일명 생성 $newFilename = $fileBaseName . '_' . $counter . '.' . $fileExtension; $counter++; } return $newFilename; } }