Php class bileşenleri (public, private, static)

Kategori : Php Dersleri

Merhaba arkadaşlar. Bu dersimizde php de oop (nesneye yönelik proğramlama anlatacağım)

Eğer, "O ne ? bişey anlamadım ben yahu" diyorsanız içinizden şu dersi inceleyin(Php class öğrenenler için ilk adım) ardından bu derse geçin.

şimdi class için bir kaç açıklama yapacağım ve classlar ile ilgili bilgiler vereceğim.

bu derste php classlarda kullanılan;

  • private
  • public
  • static
  • __construct
  • __destruct

özelliklerine değineceğiz.

Haydi başlayalım ozamannn ! smiley

 

ilk olarak public özelliğine değinelim.

Public özelliği verilen nesneler (fonksiyon yada değişkenler) dışardan değer alabililer.

"Hoca iyide dışardan derken ?" dediğinizi duydum sanki smiley

Ozaman şöyle açıklayayım. biz sınıfı kullanmak için tanımlayacağız. ve tanımladıktan sonrada bu sınıf içindeki nesneleri kullanacağız değilmi ? Evet. Biz bunlara kullanırken değer versek ? harika olurdu değilmi ? ozaman ne yapıyoruz ?

hemmen bir sınıf oluşturuyoruz.

class php_kodlari{

public $site;

public function site_yaz(){

echo $this->site;

}

}

Bu sınıfımızın, içindeki değişkenimizin ve fonksiyonumuzun kullanımı şu şekildedir;

$php_kodlari = new php kodlari; // sınıfımızı tanımladık.

$php_kodlari->site = 'www.phpkodlari.com'; // sınıf içerisindeki $site değişkenine dışarıdan değer vermiş olduk

$php_kodlari->site_yaz(); // ve site yaz fonksiyonumuzu çağırdık.

Sonuç: Ekrana www.phpkodlari.com yazdı.

peki biz sınıf içerisindeki $site değişkenine dışardan başka bir siite adı yazsaydık ne olurdu ? elbetteki

ekrana başka bir site adı yazacaktı.

 

Şimdi de private özelliğine değinelim.

private özelliği ise  bir değişken yada fonksiyon dışardan değer alamaz. sadece o nesneyi sınıf içerisindeki nesneler kullanabilir.

Hatta siz bir nesneyi private tanımladığınızda sınıf : "private bizim namusuzdur. kimseye kullandırtmayız. Kullanan olursa kan çıkar !!! " der. smiley

Ozaman public ile yaptığımız örneği private ile yapalım.

class php_kodlari{

private $site = 'www.phpkodlari.com';

public function site_yaz(){

echo $this->site;

}

}

 

Bu örneği şöyle kullanacağız;

 

$php_kodlari = new php kodlari; // sınıfımızı tanımladık.

 

$php_kodlari->site_yaz(); // ve site yaz fonksiyonumuzu çağırdık.

sonuç: ekrana www.phpkodlari.com yazdı. Fakat bu defa sınıf içerisindeki $site değişkenine

dışardan değer vermeden yazdı. Peki neden dışardan değer vermedikte sınıf içinde değer verdik ?

  1.  İstesekte değer veremezdik çünki o $site değişkenini private tanımladık. Yani o artık ellerin oldu.smiley  Ona biz müdahale edemeyiz. O değişkene sadece o sınıfın elemanları erişim sağlayabilir.
  2. Olarakta drekon hocamın bağırdığını hissettim. "o sınıf www.phpkodlari.com adresinden başka adres yazarsa o sınıfı yok ederim Ali fırat!" dediğini hissettim smiley

Pekala. Biz erişemeyiz dediğimiz, private özellik verdiğimiz $site değişkenin içeriğini ekrana nasıl bastık ? Hani erişemiyorduk biz ona ?

Cevap: Biz doğrudan erişemedikki. biz public değeri verdiğimiz site_yaz fonksiyonunu kullandık. site_yaz fonksiyonu site değişkenine erişebilir. çünki aynı sınıftalar.

 

Şimdide static özelliğine geçelim.

static olarak tanımlanan her nesne RAM bellekte saklanır. (Aslında hepsi ram bellekte saklanır fakat bu metodun saklanma şekli farklıdır) ve erişilmeside oldukça hızlıdır. Ayrıca static özelliği verdiğiniz bir nesneyi sınıfı bir değişkene tanımlamadan kullanabilirsiniz. Kısacası sınıf içindeki static bir nesne php tarafından her an kullanılabilir hale getiriliyor. hazır tutuluyor.

bu yüzden bir sınıf yapıyorsanız herşeye static özelliği vermek doğru değildir. Sadece çok sık kullandığınız fonksiyon ve değişkenlere static vermek daha doğrudur. Aksi halde boştan yere ram belleği doldurursunuz.

 

Ozaman bir örnek yapalım.

 

class php_kodlari{

static $site = 'www.phpkodlari.com';

static function site_yaz(){

echo self::$site;

}

}

 

Haydaaaa ! birde başımıza self çıktı ! Bu nedir hoca. dediniz eminim. smiley

Normalde sınıf içerisinde bir nesneyi kullanacağımız zaman $this-> ile çağırıyorduk.

fakat static olarak tanımladığınız bir nesneyi sınıf içerisinde bir yerde kullanacağınız zaman

$this-> yerine self:: ile çağırıcağız.

 

Örnek kullanım:

$php_kodlari = new php_kodlari; // sınıfımızı tanımladık.

 

$php_kodlari::site_yaz(); // ve site yaz fonksiyonumuzu çağırdık.

 

Yukarda dikkat etmenizi istediğim bir yer var. oda bu ifade "::"

static olarak tanımladığımız fonksiyonlarımızı o şekilde çağırırız.

Ayrıca static olarak tanımlanmış bir değişkenede dışardan erişilebilir.

örnek : $php_kodlari::$site;

 şeklinde erişebiliriz.

 

Şinmdiiiii. Gelelim __construct methoduna. Bu method nedir ?

Adını bir türlü ezberleyemediğim bu method bir fonksiyona  isim olarak verilir.

Ne işe yarar ?

sınıfı kullanırken sınıf tanımlandığı anda çalışır.

 

Hemmen bir örnek verelim.

 

class php_kodlari{

static $site = 'www.phpkodlari.com';

function __construct(){

echo self::$site;

}

}


şimdi gördüğünüz gibi static olarak bir site değişkenini tanımladım ve __construct() diye bir fonksiyon da tanımladım

bu fonksiyon $site değişkeninin içeriğini yazdırıyor. şimdi birde kullanımına bakalım;

$php_kodlari = new php_kodlari; // sınıfımızı tanımladık. hepsi bukadar smiley

sınıfımızı tanımlamamız ile birlikte fonksiyonumz çalıştı. bizim çağırmamıza gerek kalmadan hemde.

Not: eğer __construct fonksiyonunuzda parametre varsa yani tanımlarken  __construct($ali,$veli)

şeklinde tanımlamışsanız kullanırkende şu şekilde kullanabiliriz.

Örnek Kullanım:

$php_kodlari = new php_kodlari('deger1','deger2');

 


 

Şimdide de __destruct() fonksiyonunun ne işe yaradığını söyleyelim.

Yine adını ezberleyemediğim bu fonksiyon tıpkı __construct() fonksiyonu gibi kendisini çağırmadığımız halde terbiyesizlik yapar ve çalışır. smiley

Peki bu fonksiyon ne yapar ? bu fonksiyon sınıf bitiminde otomatik çalışır. ben genelde temizleme işleri yapan fonksiyonlarımı bu şekilde tanımlıyorum.

Bir örnek yapalım:



class php_kodlari{

private $site;

function __construct(){

 $this->site='www.phpkodlari.com';

echo $this->site;

}

function __destruct(){

 $this->site='Drekon Hoca';

echo $this->site;

}

}

 

evet gördüğünüz gibi birinci fonksiyon ve ikinci fonksiyon çalışıcak.

Örnek kullanım:

 

$php_kodlari = new php_kodlari;

 

ekrana www.phpkodlari.com drekon hoca yazacaktır.

İlk önce  __construct Ve sınıfla bi işimiz kalmadığı için __destruct() fonksiyonu çalıştı.

 

Bu dersimizde buraya kadar. Hepinize kolay gelsin.

alicilin 2012-06-30 16:10:55

DMCA.com
Bookmark and Share
Hit:33436
Puan ver:

EmB Emir Bahçecioglu

Konu anlatımı gayet başarılı ve insan psikolojisinide çok ele almış :)

Teşekkür Ediyorum

27-07-2012 03:06

    Sınıf içinde sınıf kullanımı

    calimert Cuneyt

    Benim bir Database sınıfım var ve onu başka bir sınıfta kullanmak istiyorum.

    Örnek:

    class database{

    ...

    }

    class login{

    public loginCheck(...){

    $db = new database;

    $db->.... v.s.v.s.;

    }

    }

    Yukarıdaki yapıdaki gibi bir kod bloğum var. Bu şekilde çalışıyor. Lakin ben loginCheck fonksiyonu içerisinde tanımladığım $db nesnesini Login class'ı içerisinde bir kez tanımlayıp bu class'a ait tüm fonksiyonlarda aynı nesneyi kullanmak istiyorum. Mümkün mü?

    02-08-2012 23:58

      php

      alicilin Ali Fırat Güler

      Php sınıflarda extends olayı vardır. Yani bir sınıf diğer sınıfın devamı olabilmektedir. Örnek;

      class ali {

      function kare($a){

         return $a*$a;

      }

      }

      class devami extends ali {

      function kup($a){

      return $this->kare($a)*$a;

         }


      }   

      Burada devami isimli sınıf ali isimli sınıfın devamı olarak tanımlandığı için ali isimli sınıfın private hariç bütün nesnelerine erişim sağlayabilir.

      Sizde bu şekilde yapabilirsiniz. Kolay gelsin

      03-08-2012 17:10 Edit:14-03-2013 20:36

        TeaMTurkeR Şenol TÜRKER

        Ali ustam başarılı ve keyif verici bir ders olmuş lakin imla hataları yapmışsın hadi bu seferlik affediyorum smiley

        04-04-2013 01:49

          alicilin Ali Fırat Güler
          Yazan:TeaMTurkeR

           

          Ali ustam başarılı ve keyif verici bir ders olmuş lakin imla hataları yapmışsın hadi bu seferlik affediyorum smiley

           

          Kusura bakmayın. İmla kuralları ile aram berbattır. Hatta düşmanız diyebilirim :D

          27-04-2013 21:32

            ÖNEMLİ YORUM!! :P

            gokhan gokhan karahan

            hocam ne diyeyim allah razı olsun :D çok iyi bi anlatım ama en önemli özelliği GERÇEKTEN ÖĞRETMEYİ sağlaması. gerçekten işinizi çok iyi ve başarılı yapıyorsunuz. demek istediğimi vereceğim örnekle umarım iyi anlatabilirim. demişsiniz ki:

            "public özelliği verilen nesneler dışarıdan değer alabilirler". bu cümle bile kendi adıma tek başına anlamamı sağlıyor. Üstelik! bunun anlaşılamayabilecek bir cümle olabileceğini değerlendirmişsiniz. anlaşılır olup olmadığını değerlendirmeniz gerçekten öğretmek istediğinizi ve karşıdakini gerçekten düşündüğünüzü gösteriyor. dünden beri site geziyorum. bu özellik hakkında hep şu cümleyi okudum:

            "public özelliği nesnelere dışarıdan ulaşmayı sağlar". arkadaş 5 sitedir anlamaya çalışıyorum nedir bu dışarıdan ulaşmak!!. keşke ilk site burası olsaymış. tamam kitabi olarak teorik olarak belki doğru bi açıklama olabilir ama öğretme sitesi yapıp insanlar öğrensin diye ders eklerken anlaşılır şekilde yazmak gerekmez mi? neyse ben çok sinirlenmişim :D anlatımlarınızı takip eden çok insan olduğunu bilin. birkaç arkadaşım da var. ben ilk defa yorum yazdım. yorum yazmak için üye oldum zaten. belki de önceden üye olup desteklemem gerekirdi. çok uzattım. kendimden sıkıldım. anlatımlarınızı bekliyoruz umarım yenileri olur. başarılar dilerim...

            24-04-2014 09:45 Edit:24-04-2014 09:47

              alicilin Ali Fırat Güler

              Teşekkür ederim. Gerçekten gururlandırdınız beni. Devamı gelicek inşallah

              01-06-2014 16:53

                www.Phpkodlari.com © 2009 Herkes Php öğrenecek
                Web tasarım ve eğitim kaynağınız.