Nacizane ufak birkaç güncelleme yaptım. Güncellemelerle kod daha modüler, okunabilir ve PSR-2 standartlarına uygun hale gelir.
<?php
class ResmiTatilGunleriAPI
{
private string $apiUrl;
private array $veri;
public function __construct()
{
$this->apiUrl = "https://date.nager.at/api/v2/publicholidays/" . date('Y') . "/tr";
$this->veri = $this->fetchData();
}
private function fetchData(): array
{
$response = file_get_contents($this->apiUrl);
return json_decode($response, true);
}
private function cevirTatil(string $tatilAdi): string
{
$ceviriTablosu = [
"New Year's Day" => "Yılbaşı",
"Labour Day" => "Emek ve Dayanışma Günü",
"Easter Monday" => "Paskalya Pazartesi",
"Republic Day" => "Cumhuriyet Bayramı",
"Victory Day" => "Zafer Bayramı",
"Youth and Sports Day" => "Gençlik ve Spor Bayramı",
"Democracy and National Unity Day" => "Demokrasi ve Milli Birlik Günü",
"Sacrifice Feast" => "Kurban Bayramı",
"Eid al-Fitr First Day" => "Ramazan Bayramı Birinci Gün",
"Eid al-Fitr Second Day" => "Ramazan Bayramı İkinci Gün",
"National Independence & Children's Day" => "Ulusal Egemenlik ve Çocuk Bayramı",
"Eid al-Fitr Third Day" => "Ramazan Bayramı Üçüncü Gün",
"Atatürk Commemoration & Youth Day" => "Atatürk'ü Anma Gençlik ve Spor Bayramı",
"Eid al-Adha First Day" => "Kurban Bayramı Birinci Gün",
"Eid al-Adha Second Day" => "Kurban Bayramı İkinci Gün",
"Eid al-Adha Third Day" => "Kurban Bayramı Üçüncü Gün",
"Eid al-Adha Fourth Day" => "Kurban Bayramı Dördüncü Gün"
];
return $ceviriTablosu[$tatilAdi] ?? $tatilAdi;
}
private function cevirAy(int $ayAdi): string
{
// date('d F', strtotime($tatil['date']));
// date('n') bir ayın sayısal temsili, ay değeri 1 ile 12 arasında tam sayıdır
// Örneğin, bugünün tarihi 19 Mayıs 2023 ise, date('n') ifadesi "5" değerini döndürecektir.
$ceviriTablosu = [
1 => "Ocak",
2 => "Şubat",
3 => "Mart",
4 => "Nisan",
5 => "Mayıs",
6 => "Haziran",
7 => "Temmuz",
8 => "Ağustos",
9 => "Eylül",
10 => "Ekim",
11 => "Kasım",
12 => "Aralık"
];
return $ceviriTablosu[$ayAdi] ?? '';
}
public function tatilGunleri(): array
{
// dizisindeki tatilleri filtreleyerek bugünkü tarihten sonraki tatilleri seçer
// array_map fonksiyonunu kullanarak her tatil için tarih ve isim bilgisini dönüştürerek
$tatilFilter = array_filter($this->veri, function ($tatil) {
return $tatil['date'] >= date('Y-m-d');
});
$tatilGunleri = array_map(function ($tatil) {
return [
'date' => $this->cevirAy(date('n', strtotime($tatil['date']))),
'name' => $this->cevirTatil($tatil['name'])
];
}, $tatilFilter);
return $tatilGunleri;
}
}
// Örnek kullanım
$resmiTatilGunleri = new ResmiTatilGunleriAPI();
$tatilGunleri = $resmiTatilGunleri->tatilGunleri();
if (!empty($tatilGunleri)) {
echo "<strong>" . date('Y') . " Resmi Tatil Günleri:</strong><br>";
foreach ($tatilGunleri as $tatil) {
echo "<strong>" . $tatil['date'] . "</strong> - " . $tatil['name'] . "<br>";
}
} else {
echo "Resmi tatil günleri alınamadı.";
}