PHP ile Nesne Yönelimli Programlama – 2 1

Bir önceki dersimizde class’ ın ne olduğunu ufak bir giriş yaptık, class tanımladık ve class içine bir fonksiyon tanımladık. Şimdi ise Class içinde kullanılan değişkenlere ve özelliklerine değineceğim. Sonrasında ise pekiştirme maksatlı bir sunucuya bağlanma sınıfını birlikte yazacağız.

Class İçerisinden Kullanılan Değişkenler ve Özellikleri

public : Bu değişkene ister sınıf içinden ister sınıf dışından her yerden erişilebilir. Yani başı boş değişkendir. Yani bu değişken şarapçı kısımdır.

private : Bu değişkene sadece sınıf içinde erişilebilir. Bu değişken sadıktır. Güvenlidir.

[ad#orta]

protected : Bu değişken ise biraz sonralarda anlayacağınız bir değişkendir. Şimdi yine de açıklayalım. Bu değişkene sınıf içinden ve türetilen (extends) sınıflardan erişebiliriz.  Bu değişkende candır, sadıktır, sülaleden başkasına kaçmaz.

Ayrıca bir de sürekli olarak her yerde $this ‘i göreceksiniz bu ise, sınıf içerisinde kullanılan elemanı kullan demektir. Örnek ile daha iyi anlayacağınızı düşünüyorum.

Örnek : Bir adet Database sınıfı oluşturunuz ve sunucuya bağlanma işlemi gerçekleştiriniz.

İlk olarak sınıfı oluşturalım ve sunucuya bağlanırken kullanacağımız değişkenleri private olarak tanımlayalım. Private olarak tanımlamamızın sebebi bu bağlanma değişkenine erişimi kapatmak içindir. Bağlanma sadece sınıf içerisinde olacaktır.

class database{
    private $host = 'localhost';
    private $user = 'root';
    private $pass = '123';
}

Şimdi ise database sınıfı içerisine connect fonksiyonunu oluşturalım. Bu fonksiyonlada sunucuya bağlanma kısımını gerçekleştirelim. Sunucuya bağlanırken php’nin mysql_connect fonksiyonunu kullandık ve bunu $status adlı bir değişkende sakladık. Eğer bağlantı sağlandı ise bu değişken sayesinde kontrol edelim diye. Sonrasında ise return ile durumu döndürdük.

class database{
    private $host = 'localhost';
    private $user = 'root';
    private $pass = '123';
    public function connect(){
        $status = @mysql_connect($this->host,  $this->user,  $this->pass);
        if($status){
            return 'Baglanti saglandi.';
        }else{
            return 'HATA: Baglanti saglanamadi.';
        }
    }
}

Sınıfımızın son hali yukarıdaki gibidir. Bu dosyayı class.php adı ile kaydedelim.

Şimdi ise sınıfımızı çağırma ve bağlanma işlemini ekranda gösterme kaldı. Sınıfımızın bulunduğu class.php dosyasını include edelim. Sınıfımızın yeni bir değişkenini oluşturalım ve bağlanma işlemini gerçekleştirelim.

include 'class.php';
$database = new database();
echo $database->connect();

Bu kodu da index.php olarak kaydedip localhost/index.php üzerinden çalıştırdığımızda ekran çıktısı aşağıdaki gibi olacaktır.
Çıktı : Baglanti saglandi.

Eğer hostun adını yanlış girersek veya şifresini o zaman ekranda HATA: Baglanti saglanamadi. uyarısını göreceksiniz.

Gelin şimdi işin biraz inceliğini öğrenelim. Diyelim ki…

private $host = 'localhost';

Değişkenini private olarak değil de public olarak tanımlasaydık ne olurdu?

public $host = 'localhost';

Buyrun class.php içerisindeki yeri yukarıdaki gibi public yapalım. Ve tekrar çalıştıralım. Çalıştırdığınızda hiç bir değişiklik olmadığını göreceksiniz. Şu ana kadar her şey normal gibi görünüyor. Fakat index.php dosyasını açıp oraya sadece şu aşağıdaki bir satırı eklediğimizde her şey değişecek.

$database->host='aaa';

Değişiklikten sonra index.php dosyası aşağıdaki gibi olacaktır.

include 'class.php';
$database = new database();
$database->host='aaa';
echo $database->connect();

Kodu çalıştırdığımızda tekrardan ekranda nasıl bir değişiklik olduğunu anladığınızı görer gibiyim. İşte ekran çıktısı.

Çıktı : HATA: Baglanti saglanamadi.

Buradan çıkarılan sonuç public değişkenlere gördüğünüz gibi sınıf dışından da müdahale edebiliyoruz. Sizin aklınızdan geçeni hemen söyleyeyim aynı şekilde private tanımlı olan $user değişkenini de değiştirsek index.php de ki gibi diyorsunuz. İsterseniz değiştirmeyi deneyelim. Ve hemen eklediğimiz satırın altını şu satırı index.php dosyasına ekleyelim.

$database->user='xxx';

Aslında böyle bir kullanımın olması zaten başlı başına bir saçmalıktır. Çünkü private’nin mantığına aykırı bu yüzden de bu şekilde kaydedip çalıştırdığınızda hata mesajı ile karşılaşacaksınız.
Çıktı : Fatal error: Cannot access private property database::$user in C:\AppServ\www\index.php on line 5

Sonuç : Bu dersimizde private ve public arasındaki farkı güzelce kavradığımıza inanıyorum. Sınıf oluşturma, değişken tanımlama, sınıfa erişim, erişim engelleme, sunucuya bağlanma gibi işlemleri öğrendik. Daha sonraki dersimizde ise __construct ve __destruct fonksiyonlarını göreceğiz. Onun üzerine bu örneğimizi geliştirerek devam edeceğiz.

One comment on “PHP ile Nesne Yönelimli Programlama – 2

  1. Reply Ömer Şub 23,2015 19:21

    Merhaba. Bu zamana kadar çok anlatımlar okdum. Class yapısı, nesne parametrleri. Ama bu makalede daha güzel, anlaşılır anlatmısınız. Aferin. Ben de programcıyım, sizin mantığınız daha hoşuma gitdi. Teşekküler

Leave a Reply