Вот пример функции класса 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:
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;
}
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);
}
validateApiRequest($request)– этот метод проверяет запрос API на основе определенных критериев и возвращает логическое значение.
public function validateApiRequest($request) {
// Perform validation logic here
if ($request->isValid()) {
return true;
} else {
return false;
}
}