PHP Class üzerinde Miras Alma
Hepinize merhaba dostlarım :). Bu yazımda sizlere php de class lar üzerinde miras alma özelliğinden bahsedeceğim. Zor bir yanı yok tamamen mantık üzerinden gideceğiz dostlarım :). Heyecanlandığınızın farkındayım dostlarım. O halde hiç zaman kaybetmeden başlayalım derim :). Öncelikle gelelim miras alma nedir mantıksal tanımına bakalım :)
Miras Alma Nedir (extends) ?
Dostlarım teorik bir anlatım ezbere dayalı bir anlatım olarak görmeyin sakın. Amacım mantıksal bir şekilde bunu size anlatmaktır :). Olaya gelelim.
Bir Anne veya bir baba olsun. Vefat edince mal varlıkları olsun devredecekleri vs. şeyler kime kalır ? Evlatlarına kalır tabi :). İşte oop programlamada class larda kullanılan extends de böyledir dostlarım. Ana class tan türetilen class onun çocuğu oluyor ve ana class ın özelliklerini orada rahatlıkla kullanabiliyoruz :). Biraz teorik gibi kalacağını sezdim öyle olmasını istemiyorum örnekle pekiştirilmesini istiyorum. Gelin hızlıca onu da ayarlayalım
Örneğimizde Melisa isminde bir anne class olsun ve bunun Perizat adında bir çocuk class ı olsun. Gelin bunu ufak bir örnekle ayarlayalım
<?php
class Melisa{
public $isim; // değişken oluşturduk
public function __construct(){
$this->isim = "Melisa"; // isim değişkenine Melisa yazdırdık
return $this->isim; // geri döndürdük
}
}
// Perizat class ının Melisa Class ının çocuğu olarak belirttik
class Perizat extends Melisa{
public $isim; // değişken oluşturduk
public function __construct(){
$this->isim = "Perizat"; // değişkene perizat yazdırdık
}
public function ekrana_bas(){
echo "Benim İsmim: ".$this->isim.".| Annemin İsmi: ".parent::__construct();
}
}
$perizat = new Perizat(); // nesne oluşturduk
$perizat->ekrana_bas(); // nesne altından ekrana_bas methoduna ilerledik
?>
şekildeki gibi Melisa class ı oluşturup Perizat class ını da bundan türettik :). Ama aklınızda takılan bir soru var bunu sezdim dostlarım :)
Hocam parent::__construct(); ne demek ?
Kafanızda büyüteceğiniz bir şey yok dostlarım mantık gayet basit :). Burada diyoruz ki Anne class ının özelliğini alt class ta kullanmamıza yarıyor :). Biz burada dedik ki parent:: yani anne class a git __construct() ile de constuct() yani yapıcı method dan dönen değeri al dedik :). Tamamen bu kadar dostlarım :). Şimdi gelelim ekran çıktısına :)
Benim İsmim: Perizat.| Annemin İsmi: Melisa
şeklinde ekranımıza çıktı basacaktır :). Olay bu kadar basit dostlarım :). Gelin bir örnek daha yapalım ve konumuzu sonlandıralım
Bir araba class ı oluşturalım ve bundan da audi class ı türetelim. Bu audi nin çalışması için araba class ından stabil değerleri alıp kontrol ettirelim. Şartlar sağlanırsa araba çalışsın , sağlanmazsa araba çalışmıyor yazdırsın. Gelin bunun kodlamasını yapalım
<?php
class Araba{
public $benzin; // benzin değişkeni oluşturduk
public $aku; // akü değişkeni oluşturduk
public function __construct(){
$this->benzin = 100; // yapıcı method ile 100 değeri atadık
$this->aku = 100; // yapıcı method ile 100 değeri atadık
}
public function benzin_deger(){
return $this->benzin; // benzin değerini geri döndürdük
}
public function aku_deger(){
return $this->aku; // akü değerini geri döndürdük
}
}
// araba class ından audi class ı türetelim
class Audi extends Araba{
public function bilgi(){
$benzin = parent::benzin_deger(); // ana class tan benzin değerini alalım
$aku = parent::aku_deger(); // ana class tan akü değerini alalım
if($aku>=50 && $benzin>=20){
// şart sağlanıyorsa burası çalışacak
echo "Audi ile yola çıkmaya hazırsınız";
}else{
// şart sağlanmıyorsa burası çalışacak
echo "Araba çalışmıyor. Akü ve/veya benzini kontrol edin";
}
}
}
$audi = new Audi(); // buradan nesne oluşturduk
$audi->bilgi(); // nesneden methoda eriştik
?>
evet dostlarım :). Bu şekilde örneğimiz de oluşturduk. parent:: ile zaten önceki örnekte de anlattığım gibi ana class taki methodlara erişip işlemleri yaptırdık :). Gelelim şimdi ekran çıktısına
Audi ile yola çıkmaya hazırsınız
ekranımıza Audi arabamız mesaj veriyor dostlarım :) Artık yola çıkabiliriz :).
Evet dostlarım bu yazımda anlatacaklarım bu kadar :). Sizden isteğim istikrarlı olmanız ve sürekli pratik yapmanızdır :). Umarım sizleri sıkmadan ve yalın bir anlatımla konuyu anlatmışımdır.
Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :)
Yazar Hakkında
Kendi Halinde Bir Backend Developer