PHP Sihirli Metotlar

Bu yazımızda PHP dilindeki sihirli metotlara değineceğiz. Nesne yönelimli programlamada bazı durumlarda otomatik olarak çalışmasını istediğimiz şeyler olabilir. Bunun için sihirli metotları kullanırız.

Bu metotlar PHP ile ön tanımlı olarak gelirler. Ve başlarında "__" çift alt çizgi bulunur. Bu nedenle kendi tanımladığımız fonksiyonların başına çift alt çizgi koymamamız tavsiye edilir. Şimdi en çok kullanılan sihirli metotlara sırayla değinelim.

__construct() Metodu

Belki de en çok kullanacağınız sihirli metot budur.Constructor kelime anlamı olarak yapıcı anlamına gelmektedir. Bu metoda da yapıcı metot denir. Bir sınıf çağırıldığında ilk çalışan metot budur. Sınıf çağırıldığında ilk olarak yapması gereken şeyleri belirtmek için bu sihirli metotu kullanırız.

<?php 
 
 class Insan
 {
 	public $ad;
 	public $soyad;
 	public function __construct($ad,$soyad)
 	{
 		$this->ad = $ad;
 		$this->soyad = $soyad;
 		echo $this->ad." ".$this->soyad;
 	}
 } 
 $zafer = new Insan("Zafer","Yıldız")
// Çıktı: Zafer Yıldız
 ?>

__destruct() Metodu

Sınıf içerisinde en son çalışan metottur. Destructor kelime anlamı olarak yıkıcı anlamına gelir. Bu metoda da yıkıcı metot denir.

<?php 
 
 class Insan
 {
 	public $ad;
 	public $soyad;
 	public function __construct($ad,$soyad)
 	{
 		$this->ad = $ad;
 		$this->soyad = $soyad;
 		echo $this->ad." ".$this->soyad."<br>";
 	}


 	public function __destruct(){
 		echo "Sınıfta çalışan son fonksiyon";
 	}
 } 
 $zafer = new Insan("Zafer","Yıldız");

/*Çıktı : 
Zafer Yıldız
Sınıfta çalışan son fonksiyon
*/
 ?>

__call() Metodu

Bu metodu ise sınıf içinde bir metodun olup olmadığını kontrol etmek için kullanabiliriz.

<?php
class Sare {

  public function __call($metodAdi, $metodParametreleri) {
    echo $metodAdi . " metodu bu sınıfta yok.";
    print_r($metodParametreleri);
  }
} 
$nesne = new Sare();
$nesne->AdiSoyadi("Sarenur", "Ocaktan");  // Sınıfta olamayan bir metot
?>

__get() Metodu

Nesne içinde erişilemeyen veya olmayan bir özelliğe ulaşmaya çalışırsak bu fonksiyon otomatik olarak çalışır.

<?php


class Insan { 
  private $kilo; 
  public function __get($ozellikAdi) {
    echo $ozellikAdi . " özelliği bulunmuyor veya erişilemiyor.";
  } 
} 
$insan = new Insan();
echo $insan->kilo;  // private olan bir özelliğe erişim olmadığı için get sihirli metodu çalışır.
?>

__set() Metodu

Tanımlanan sınıfta olmayan bir özelliğe değer verildiğinde devreye giren metoddur.

<?php 
class Araba
{
    public $marka;
    private $model;


    public function __set($degisken, $deger)
    {
        echo "$degisken adında bir özellik yok veya erişim izniniz bulunmamaktadır.";
    }
} 
$araba = new Araba();
$araba->marka = "Opel"; 
$araba->model = "Şahin"//private olduğu için hata verecektir. 
?>

__toString() Metodu

Nesne yazdırılmaya çalışıldığında çalışır.

<?php
class Demlik
{
    public $boyut; 
    public function __toString()
    {
        return "Echo yazınca ben çalışıyorum";
    }
} 
$demlik = new Demlik();
echo $demlik;
?>


__invoke() Metodu

Nesne eğer fonksiyon gibi çağırılırsa bu metot çalışır.

<?php
class Bardak {


  public function __invoke($param) {
    echo  $param;
  } 
}  
$bardak = new bardak();
$bardak("Zafer"); 

YAZAR HAKKINDA

26 Yaşında. Araştırmayı seven, bir şeyler öğretmeye meraklı bir Bilgisayar Mühendisi

0 YORUM

Bu konuya henüz yorum yapılmamış

Yorum Yap

@COPYRIGHT KodlamakLazım Tüm Hakları Saklıdır.