Gönderen Konu: (Ders)Php Class Yapısı  (Okunma sayısı 723 defa)

Çevrimdışı weptiryaki

  • Genel Moderatör
  • Trade Sayısı: (0)
  • *
  • İleti: 89
  • Karma +3/-0
  • Cinsiyet: Bay
  • Webmaister
    • Profili Görüntüle
(Ders)Php Class Yapısı
« : 16 Kas 2012, 07:00:44 »
[h1]Bu dersimizde Php ile ileri seviye kullanımda işinize yarayacak. daha doğrusu uzmanlık seviyesinde öğrenmek zorunda olacağınız class (sınıf) yapısına giriş yapacağız.
Normal koşullarda class yapısı kullanmadan birçok işinizi fonksiyonlarla halledebilirsiniz. Eğer fonksiyonların sağladığı kolaylığa alıştıysanız o zaman işinizi 3-4 kat daha da kolaylaştıracak bir yapıyı öğrenmeye ne dersiniz.
Herzaman olduğu gibi Öncelikle işin mantığına bakalım:
Class hazırlandıktan sonra aynı fonksiyonlar gibi tek satırda çağrılır. ve kendi başına bir değişken gibi davranır.
örnek: insan isimli bir kütüphane yaptık diyelim:
şu şekilde kullanıldığını görmeniz işin eğlenceli kısmını anlamanızı sağlayacak.
 
$ogrenci = new insan();
$ogrenci -> adi = "Ali";
$ogrenci -> soyadi = "Zeki";
$ogrenci -> dogum_tarihi=1990; 

$ogrenci -> adini_soyle();
$ogrenci -> yasin_kac();
Özellikle kırmızı ile gösterdiğim bölüme dikkat etmenizi istiyorum. değişkenler bir kez tanımlandıktan sonra fonksiyonların kullanımı çok kolay oluyor. işin tek zor kısmı kütüphaneyi ilk üretme aşaması. ama kütüphane yapmayı öğrendikten sonra başkalarının hazırladığı kütüphaneleri kullanmak çok kolaylaşıyor. herhangi bir hatası varsa onu giderdikten sonra birsürü hazır class emrinize olacak.
 
Şimdi insan isimli class kütüphanesini üretelim:
 class insan
Kod: [Seç]
{
    public $adi;
    public $soyadi;
    public $dogum_tarihi=0;
    private $anne_kizlik_soyadi;

    function adini_soyle()
    {
        echo "Benim adım ". $this->adi ."<br>";
    }

    function yasin_kac()
    {
       $yas = date("Y") - $this->dogum_tarihi ;
       echo "Yaşım ".$yas ."<br>";   
    }

}

Sonuç:
Benim adım Ali
Yaşım 20

Class kullanımında dikkat edeceğiniz konulardan biri değişkenleri $this->degisken şeklinde yazarken $işareti sadece this kelimesi önünde bulunur. ikincisi private şeklinde tanımlanmış değişkenleri dışardan yazdırmak mümkün değildir.
örnek:
Aşağıdaki komut hata verecektir:

 
Kod: [Seç]
echo $ogrenci -> anne_kizlik_soyadi; Sonuç:

Fatal error:  Cannot access private property insan::$anne_kizlik_soyadi in test.php on line
32

private(kişisel)
bir değişken bu şekilde tanımlanmışsa sadece class içindeki fonksiyonlar tarafından kullanılabilir. class dışından yazdırma veya değiştirme yapılamaz.
 
örnek: aşağıdaki şekilde değişiklik yapılarak insan isimli class yapısını değiştirmemiz halinde "Anne kızlık adı" bilgisini öğrenebiliriz.
 class insan
Kod: [Seç]
{
    public $adi;
    public $soyadi;
    public $dogum_tarihi=0;
    private $anne_kizlik_soyadi="zekiye";

    function adini_soyle()
    {
        echo "Benim adım ". $this->adi ."<br>";
    }

    function yasin_kac()
    {
       $yas = date("Y") - $this->dogum_tarihi ;
       echo "Yaşım ".$yas ."<br>";   
    }

    function anne_soyadi($istek)
    {
         if($istek=="lütfen")
         {
             echo "Annemin kızlık soyadı : ".$this->anne_kizlik_soyadi ;
         }else{
             echo "Nayırr, Söylemem";
         }     
    }

}

 
yeni fonksiyonu çağırmak için şöyle yazmak gerekir:

Kod: [Seç]
$ogrenci -> anne_soyadi("lütfen");
sonuç:

Annemin kızlık soyadı : zekiye

Tabii buradaki uygulamada tüm bilgileri kendimiz girdiğimiz için pek mantıklı görünmüyor ama gerçekçi bir uygulamada bilgilerin class içindeki bir fonksiyon yardımıyla veritabanından alınarak gerekli yerlere doldurulduğunu düşünürsek ulaşmak istenen bilgilere erişimi kısıtlayan ve gerektiğinde çıktı veren güzel bir class olacaktır.

Alinti:phpkodlari.com
[/h1]