Developersland

Teknoloji ve Yazılım Blogu

  • Yazıtipi boyutunu arttır
  • Varsayılan yazıtipi boyutu
  • Yazıtipi boyutunu azaltır

PHP Sınıfları

Daha önce Java ve C# da nesne yönelimli programlama yapmaya alıştığım için Php ile nesne yönelimli kod yazmaya başladığım zaman bazı şeyler biraz kafa karıştırıcı geliyordu. Bu nedenle benim gibi zorluk yaşayan kişilere kolaylık sağlamak amacıyla bu yazıyı yazmaya karar verdim.

Sınıf içerisinde tanımladığınız bir değişken static, constant veya parent'in bir değişkeni olmasına bağlı olarak bu değişkene metodlar içerisinde farklı biçimlerde erişmek gerekiyor.

Tasit ve MercedesKnight isimli iki sınıfımızın olduğunu varsayalım. Bunlardan Tasit sınıfı abstract bir sınıf olsun. Abstract sınıfların ne olduğunu bilmiyorsanız araştırmanızı öneririm. Ancak kısaca şöyle özetleyebilirim eğer bir sınıf ismi duyduğunuzda aklınızda somut bir nesne canlanmıyorsa demekki bu sınıfı abstract yapmanız gerekiyor. Tasit denildiği zaman aklımıza somut bir şey oluşmaz bu tasit motorsiklet de olabilir araba da olabilir, otobüs de olabilir. Bu nedenle hayali bir şeydir aslında taşıt dediğimiz şey. MercedesKnight deyince ise aklımızda artık bir nesne oluşur bu aşağıdaki gibi bir arabadır.


mercedes knight

MercedesKnight sınıfı aslında bir taşıt olduğundan dolayı bütün taşıtların ortak özelliklerini içerisinde barındıran Tasit sınıfının özelliklerini miras yoluyla alır bunu da extend keyword'ü yardımıyla sağlarız.


abstract class Tasit {

    const uretimTarihi="2009";

}


class MercedesKnight extends Tasit {

    public function getUretimTarihi()

    {

        return parent::uretimTarihi;

    }

}

Denemek İçin:

    $araba=new MercedesKnight();

    echo $araba->getUretimTarihi();

ÇIKTI: 2009


Tasit sınıfının içerisinde const bir değişken tanımladık ve buna bir değer atadık. Daha sonra bu değişkenin MercedesKnight sınıfının içerisinde kullanılabilmesi için bu değişkenin önüne parent::uretimTarihi yazarak bu değişkeni çağırdık.

"SCOPE RESOLUTION OPERATOR" İSMİ VERİLEN ÇİFT İKİ NOKTA ÜST ÜSTE İŞARETİNİN KULLANIMI (::) 

"::" aşağıdaki değişken ve metodlar için kullanılır:

-static (değişken veya metod)

-const (değişken)

-overriden (değişken veya metod)

Kullanımı şu şekildedir:

Sınıf::$staticDeğişken, Sınıf::constDeğişken veya Sınıf::overridenMetod();

Bu değişkenleri sınıf içerisinde kullanırken ise self, parent ve static keywordlerini kullanmamız gerekmektedir.


self ve this arasındaki fark nedir?

"this yaratılan instance ile ilgili değişkenler için kullanılır. Self keyword'ü ise sınıf ile ilgili değişken ve metodlar için kullanılır."

static bir değişken bir Sınıfın tüm üyeleri için aynı değere sahiptir ve burada self kullanılması gerekmektedir.

Nesneye göre değişkenlik gösteen diğer özellikler için ise this kullanmak gerekmektedir.

NOT: php 5.3 ve sonrası için self yerine static kullanmaya özen gösterin. Bu hem de kod okunurluluğu açısından daha iyidir.






KAYNAK:

http://stackoverflow.com/questions/2206387/what-is-a-class-in-php

http://www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php

http://stackoverflow.com/questions/151969/php-self-vs-this

 

Yorum ekle


Güvenlik kodu
Yenile