Функция класса PHP, требующая всех файлов .php в каталоге API и подкаталогах

Вот пример функции класса PHP, которой потребуются все файлы.php в каталоге «api» и его подкаталогах:

class APIHandler {
    public function requireAllPhpFiles($directory) {
        $iterator = new RecursiveIteratorIterator(
            new RecursiveDirectoryIterator($directory)
        );
        $phpFiles = new RegexIterator(
            $iterator,
            '/^.+\.php$/i',
            RecursiveRegexIterator::GET_MATCH
        );
        foreach ($phpFiles as $file) {
            require_once $file[0];
        }
    }
}
// Example usage
$apiHandler = new APIHandler();
$apiHandler->requireAllPhpFiles('api');

Этот код использует классы RecursiveDirectoryIterator и RecursiveIteratorIterator для перебора всех файлов и подкаталогов в указанном каталоге «api». RegexIterator используется для фильтрации только файлов.php. Наконец, код требует использования каждого файла.php с помощью оператора require_once.

Вот несколько дополнительных методов, которые вы можете добавить в класс APIHandler:

  1. getApiFiles($directory)– этот метод возвращает массив всех файлов.php в каталоге «api» и его подкаталогах.
public function getApiFiles($directory) {
    $iterator = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($directory)
    );
    $phpFiles = new RegexIterator(
        $iterator,
        '/^.+\.php$/i',
        RecursiveRegexIterator::GET_MATCH
    );
    $files = [];
    foreach ($phpFiles as $file) {
        $files[] = $file[0];
    }
    return $files;
}
  1. logApiRequest($request)– этот метод записывает сведения о запросе API в файл журнала.
public function logApiRequest($request) {
    $logFile = 'api.log';
    $timestamp = date('Y-m-d H:i:s');
    $logEntry = "$timestamp - $request\n";
    file_put_contents($logFile, $logEntry, FILE_APPEND);
}
  1. validateApiRequest($request)– этот метод проверяет запрос API на основе определенных критериев и возвращает логическое значение.
public function validateApiRequest($request) {
    // Perform validation logic here
    if ($request->isValid()) {
        return true;
    } else {
        return false;
    }
}