now()->format('Y-m-d H:i:s'), 'message' => $message, 'memory_usage' => round(memory_get_usage() / 1024 / 1024, 2) . ' MB', 'data' => $data ]; switch ($type) { case 'error': Log::error($message, $logData); break; case 'warning': Log::warning($message, $logData); break; case 'info': Log::info($message, $logData); break; default: Log::debug($message, $logData); } } /** * Sütun adında "date" geçen alanları Carbon ile formatlayan fonksiyon * @param array|object $data Formatlanacak veri * @param string $format Tarih formatı (default: d.m.Y) * @return array|object Formatlanmış veri */ function formatDateColumns($data, $format = 'd.m.Y') { // Veri tipini kontrol et if (!is_array($data) && !is_object($data)) { return $data; } // Array'e çevir $dataArray = is_object($data) ? (array)$data : $data; $modified = false; foreach ($dataArray as $field => $value) { // Eğer sütun adında "date" kelimesi varsa ve değer boş değilse if (stripos($field, 'date') !== false && !empty($value) && $value !== null) { // Zaten formatlanmış mı kontrol et (dd.mm.yyyy formatında) if (preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $value)) { continue; // Zaten doğru formatta } try { // Carbon ile tarihi parse et $carbonDate = Carbon::parse($value); // Geçerli bir tarih mi kontrol et if ($carbonDate->isValid()) { $dataArray[$field] = $carbonDate->format($format); $modified = true; } } catch (Exception $e) { // Tarih parse edilemezse orijinal değeri koru continue; } } } // Sadece değişiklik varsa yeni obje/array oluştur if ($modified) { return is_object($data) ? (object)$dataArray : $dataArray; } return $data; } function mb_str_replace($search, $replace, $subject) { return implode($replace, explode($search, $subject, 2)); } function replacePlaceholdersFileName($template, $data) { return preg_replace_callback('/\{(\w+)\}/', function ($matches) use ($data) { $key = $matches[1]; // Süslü parantez içindeki anahtar return $data[$key] ?? $matches[0]; // Anahtar varsa değeri, yoksa orijinal metni döndür }, $template); } ?>