次のような関数を作成する方法を考えています。
Setup.php という名前のファイルが 1 つのフォルダーおよび/または関連するサブフォルダーに 2 回存在する場合は、メッセージを返します。拡張子が .css のファイルがフォルダーまたはそのサブフォルダーに複数回存在する場合は、メッセージを返します
サブフォルダーがあるため、この関数は再帰的でなければなりません。'Setup.php' または '.css' をハード コードしても問題ありません。
私が現在持っているものは少し面倒ですが、うまくいきます(この問題を理解した後にリファクタリングが行われます)
protected function _get_files($folder_name, $type){
$actual_dir_to_use = array();
$array_of_files[] = null;
$temp_array = null;
$path_info[] = null;
$array_of_folders = array_filter(glob(CUSTOM . '/' .$folder_name. '/*'), 'is_dir');
foreach($array_of_folders as $folders){
$array_of_files = $this->_fileHandling->dir_tree($folders);
if(isset($array_of_files) && !empty($array_of_files)){
foreach($array_of_files as $files){
$path_info = pathinfo($files);
if($type == 'css'){
if($path_info['extension'] == 'css'){
$actual_dir_to_use[] = $folders;
}
}
if($type == 'php'){
if($path_info['filename'] == 'Setup' && $path_info['extension'] == 'php'){
$temp_array[] = $folders;
$actual_dir_to_use[] = $folders;
}
}
}
}
$array_of_files = array();
$path_info = array();
}
return $actual_dir_to_use;
}
たとえば、packagesとphppath/to/apples, path/to/bananas, path/to/fruit, path/to/cat, path/to/dog
を関数に渡すと、packages フォルダーを調べて、拡張子が php の Setup を含むすべてのサブフォルダー名 (例: ) を返します。
問題は、apples/ に複数の Setup.php が含まれている場合、次のようになります。path/to/apples, path/to/apples, path/to/bananas, path/to/fruit, path/to/cat, path/to/dog
したがって、この関数を変更するか、上記の sudo コードを満たす別の関数を作成する必要があります。
問題?どこから始めればよいかわかりません。だから私はここで助けを求めています。