Veritabanından Gelen Değerleri Class içinde Basmak
Merhaba Arkadaşlar,
Aşağıdaki şekilde statik bir bir class ile doğum günü gelen kişilerin bir listesini basıyorum.
class Birthday {
private $birthDays;
public $today;
public $notifications;
public function __construct() {
global $DogumGunuListesi;
$this->today = new DateTime('today');
$this->birthDays = [
//echo $DogumGunuListesi;
'Ali' => '17-09-1997',
'Veli' => '11-09-1993',
'Zeki' => '15-09-1991'
];
$this->notifications = [];
}
public function birthReminder() {
foreach ($this->birthDays as $name => $birthDay) {
$birthDate = new DateTime($birthDay);
if($this->compareDay($birthDate) && $this->compareMonth($birthDate)) {
array_push($this->notifications, [
"age" => $birthDate->diff($this->today)->y,
"name" => $name,
"dob" => $birthDay
]);
}
}
}
protected function compareDay($birthDate) {
return $birthDate->format('d') == $this->today->format('d');
}
protected function compareMonth($birthDate) {
return $birthDate->format('m') == $this->today->format('m');
}
}
$person = new Birthday();
$person->birthReminder();
Aşağıdaki bilgileri mediumtext olarak veritabanında tutuyorum.
'Ali' => '17-09-1997',
'Veli' => '11-09-1993',
'Zeki' => '15-09-1991'
Bununla birlikte veritabanından çekip class'a basarak kullanamıyorum.
Veritabanından çektiğim ve $DogumGunuListesi değişkenine eşitlediğim bilgileri basmak için global $DogumGunuListesi; tanımı yaptım, olmadı.
Sorguyu class'ın içinde yaptım yine olmadı.
Nerede hata yaptığımı bir türlü bulamadım. Yardımcı olabilirseniz memnun olurum.
Şimdilik manuel olarak listeyi koda yapıştırarak çalıştırabiliyorum.
Teşekkürler.
Class dışında $DogumGunuListesi değişkenine eşitledim.
Sonucu class içinde 6'ıncı satırda global $DogumGunuListesi; ile çağırdım.
7'inci satırda echo "$DogumGunuListesi"; ile bastım. Ekran Alıntısı Ekran alıntısında Doğum günü yok yazmasının sebebi statik tanımların commentli olmasıdır.
Bununla birlikte asıl 11'inci satırdaki $this->birthDays = [] arasında olması gerekiyor.
Burada print_r() ile basınca 'Ali' => '21-09-1997', 'Veli' => '11-09-1993', 'Zeki' => '15-09-1991'
çıktısını veriyor ve duruyor.
Ekran Alıntısı
Ekran alıntısı aldığım araç, görsel uzantısı olan bir bağlantı vermediği için böyle bağlantı şeklinde ekliyorum.
class Birthday {
private $birthDays;
public $today;
public $notifications;
public function __construct() {
global $DogumGunuListesi;
echo "$DogumGunuListesi";
$this->today = new DateTime('today');
// for demo purpose we set harry's birthday for every day
$this->birthDays = [
//print_r ($DogumGunuListesi)
//'Ali' => '21-09-1997',
//'Veli' => '11-09-1993',
//'Zeki' => '15-09-1991'
//'Harry' => $this->today->format('d-m').'-1991'
];
$this->notifications = [];
}