v2.5.2
Giriş yap

Veritabanından Gelen Değerleri Class içinde Basmak

yerdemli
471 defa görüntülendi

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.

yerdemli
968 gün önce

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 = [];
			
		}