PHP

PHP OOP(Nesne Tabanlı Programlama) Giriş 1

Yazar : Burak Demir

Nesne tabanlı programlama(OOP), geliştirdiğimiz yazılımı parçalar haline getirmemizi sağlar. Parçalar haline getirdiğimiz programımız hem sorunlara müdahale hem ilerleyen zamanlarda yapacağınız değişiklikler hem de kodlamada size çok büyük avantajlar sunacaktır.

PHP’de Nesne tabanlı programlama PHP4 ile başlamıştır ve 2004 yılında yayınlanan PHP5 ile kararlı hale gelmiştir.

Gelin PHP ile Nesne tabanlı programlamaya giriş yapalım. İlk olarak yazımda kullanacağım terimleri açıklayacağım.

Kavramlar

Sınıf : Nesne tabanlı programlamada  sınıflar,  nesneleri oluşturabilmemiz için gerekli olan kod parçacıklarıdır.

Nesne : Sınıflardan üretilmiş değerlerdir.

Inheritance (Miras, Kalıtım) : Bir sınıf içerisinde yazmış olduğunuz metod ve özellikleri istediğiniz kadar başka bir sınıf içerisinde kullanmanıza verilen isimdir.

Polymorphism (Çok Biçimlilik) : Yazmış olduğunuz metodun birden çok nesne tarafından kullanılmasıdır.

Encapsulation : Nesne hakkındaki bilgi ve işlemlerdir. Nesnenin niteliklerini ve işlemlerini ortaya koyar.

Construct : Kurucu fonksiyondur. Sınıf çalıştığında ilk olarak bu fonksiyon çalışır.

Destruct : Yıkıcı fonksiyondur. Sınıfın çalışması bittiği zaman çalışır.

Sınıf Oluşturma

PHP de sınıf oluştururken class ifadesini kullanırız.

<?php

    class IlkSinifim{
        
        //Buraya Kodlar Yazılacak

    }

?>

Sınıfımıza kodlar ekleyelim. İlk olarak fonksiyon oluşturuyoruz.

<?php
    
    class IlkSinifim{

        function ilkFonksiyonum(){

            echo "Bu Benim İlk Fonksiyonum";

        }

    }

?>

Sınıf içerisinde değişkenler oluşturalım.

<?php
    
    class IlkSinifim{

        $deger1 = "Burak Demir";
        $deger2;

    }

?>
Nesne Oluşturma

Sınıfları kullanarak nesne oluşturmak çok kolaydır. Sınıfları kullanarak nesne oluşturmak için new ifadesi kullanılır.

<?php
    
    //Yazımda oluşturduğum ilkSinifim sınıfını kullanarak nesneler oluşturuyorum.

    $nesne1 = new IlkSinifim();
    $nesne2 = new IlkSinifim();

?>

Nesneleri kullanarak bir sınıf içerisindeki fonksiyonu çağıralım.

<?php

    $nesne1 = new IlkSinifim();//Nesne Oluşturduk.
    $nesne1->ilkFonksiyonum();//Fonksiyonu Çağırdık. Ekrana "Burak Demir" yazacak.

?>
Inheritance(Kalıtım, Miras)

PHP’de bir sınıf içerisinde başka bir sınıfın metod ve özelliklerini kullanmak istersek extends ifadesiyle o sınıf içerisindeki metod ve özellikleri istediğimiz sınıfa dahil eder ve kullanabiliriz.

<?php
    
    class IlkSinifim{

        function ilkFonksiyonum(){

            echo "Bu Benim İlk Fonksiyonum";

        }

    }

    class ikinciSinifim extends ilkSinifim{

        //Kodlarınızı buraya yazabilirsiniz

    }

?>
Polymorphism (Çok Biçimlilik)

Üst sınıfta tanımlamış olduğumuz metodlar, polymorphizm sayesinde alt sınıflarda farklı işlemler yapar.

<?php

    class A{

        function goster(){
            echo "A Sınıfım <br/>";
        }
    }

    class B extends A{
        function goster(){
            echo "B Sınıfım <br/>";
        }
    }

    class C extends A{  
  
    }

$nesne1 = new B();

$nesne1->goster();

$nesne2 = new C();

$nesne2->goster();

/* 
******Ekran Çıktısı*******/ 
*   B Sınıfım
*   A Sınıfım
*/

?>
Encapsulation

Encapsulation verilere doğrudan bir sınıfın dışından erişilmesini kontrol eder. 3 komuttan oluşur. Public, Private, Protected.

1. Public

Public ile tanımlanan değişken ve fonksiyonlara her ortamdan erişebiliriz.

<?php

    class A{
    
        public $veri;

        public function veriGoster($veri){

            return $this->veri;

        }

        public function veriEkle($veri){

            $this->veri = $veri;
    
        }

    }

$nesne1 = new A();
$nesne1->veriEkle("burakdemir.com.tr");
echo $nesne1->veriGoster();


?>

2.Private

Private ile tanımlanan değişken ve fonksiyonlara sadece class içerisinden erişebiliriz. Class dışından erişim sağlayamayız.

<?php

    class A{
    
        public $veri;

        public function veriGoster($veri){

            return $this->veri;

        }

        private function veriEkle($veri){

            $this->veri = $veri;
    
        }
    }

$nesne1 = new A();
$nesne1->veriEkle("burakdemir.com.tr");
echo $nesne1->veriGoster();


?>

Yukarıdaki kodu çalıştırdığınızda hata alacaksınız. çünkü private ile tanımlanan fonksiyona sadece sınıf içerisinden erişim sağlanabilir. Sınıf dışından kesinlikle erişim sağlanamaz.

3.Protected

Protected ile tanımlanan değişken veya fonksiyona, class içerisinden veya miras alan sınıf içerisinden erişebiliriz. Public gibi her ortamdan erişim sağlanamaz.

<?php

    class A{
    
        protected $veri;

        public function veriGoster($veri){

            return $this->veri;

        }

        public function veriEkle($veri){

            $this->veri = $veri;
    
        }
    }

    class B extends A{
    
        public function veriGoster($yeniveri){

            return $this->veri;

        }

        public function veriEkle($yeniveri){

            $this->veri = $veri;
    
        }

    }

$nesne1 = new B();
$nesne1->veriEkle("burakdemir.com.tr");
echo $nesne1->veriGoster();


?>
Construct

Class çağırıldığı anda otomatik olarak çalışan fonksiyondur.

<?php

    class IlkSinifim{

        function __construct(){

            echo "Construct Fonksiyonu <br />";

        }

    }

?>
Destruct

Class ile işşimiz bittiği zaman otomatik olarak çalışan fonksiyondur.

<?php

    class IlkSinifim{

        function __construct(){

            echo "Construct Fonksiyonu <br />";

        }

        function __destruct(){

            echo "Destruct Fonksiyonu";

        }

    }

?>

Construct ve Destruct fonksiyonlarında sadece bir nesne oluşturmanız yeterli. Hepsi otomatik olarak çağırılacak ve çalışacaklardır.

Not : Php ile sınıf oluştururken, sınıfı içerden yani sınıfımızı oluşturduğumuz dosyanın adı sınıfımızla aynı olmalıdır.

Yazar Hakkında

Burak Demir

Süleyman Demirel Üniversitesi Bilgisayar Mühendisliği öğrencisiyim. Yazılım, bilgi güvenliği, adli bilişim ve bir çok konuda meraklı !asosyal bir yazılımcı.

%d blogcu bunu beğendi: