51 lines
1.3 KiB
PHP
51 lines
1.3 KiB
PHP
<?php
|
|
/**
|
|
* Standardized JSON Responses with Integrated Logging
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
function json_response(bool $success, $data = null, ?string $message = null, int $code = 200) {
|
|
// 1. Logging Logic
|
|
$logEntry = sprintf(
|
|
"[%s] %s %s | Code: %d | Success: %s | Message: %s | Data: %s\n",
|
|
date('Y-m-d H:i:s'),
|
|
$_SERVER['REQUEST_METHOD'] ?? 'CLI',
|
|
$_SERVER['REQUEST_URI'] ?? '',
|
|
$code,
|
|
$success ? 'YES' : 'NO',
|
|
$message ?? 'N/A',
|
|
json_encode($data, JSON_UNESCAPED_UNICODE)
|
|
);
|
|
|
|
$logDir = STORAGE_PATH . '/logs';
|
|
$logFile = $logDir . '/app.log';
|
|
|
|
if (!is_dir($logDir)) {
|
|
mkdir($logDir, 0755, true);
|
|
}
|
|
|
|
@file_put_contents($logFile, $logEntry, FILE_APPEND);
|
|
|
|
// 2. HTTP Response
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
http_response_code($code);
|
|
|
|
echo json_encode([
|
|
'success' => $success,
|
|
'data' => $data,
|
|
'message' => $message,
|
|
'timestamp' => date('c')
|
|
], JSON_UNESCAPED_UNICODE);
|
|
|
|
exit;
|
|
}
|
|
|
|
function json_error(string $message, int $code = 400, $errors = null) {
|
|
json_response(false, $errors, $message, $code);
|
|
}
|
|
|
|
function json_success($data = null, ?string $message = 'Success', int $code = 200) {
|
|
json_response(true, $data, $message, $code);
|
|
}
|