Merhaba, PHP Class Kullanımı yazım ile php yazılarıma devam ediyorum. Biliyorsunuz yakın zamanda PHP ile projeler yapmaya başlamıştım. Hem proje geliştiriyorum hem öğreniyorum. C# ‘da da olduğu gibi PHP’de de class kullanımı var ve benim class kullanımına ne kadar takıntılı olduğumu bilirsiniz. :D Gelin PHP’de class nasıl kullanılıyor görelim.
Class = Sınıf
Funciton = Metot/Fonksiyon
PHP Class Kullanımı
Bir php dosyası açalım yani uzantısı *.php olsun. PHP etiketleri yazarak bir sınıf tanımlayalım.
<?php class DataBaseSystem { } ?>
Sınıf tanımlamasını yaptık. DataBaseSystem adını verdiğimiz bu sınıf içerisinde adından da anlayacağımız şekilde veri tabanı işlemlerini yazacağız. Bu sınıf benim C# ‘da SQLConnectionClass sınıfım ile aynı amacı güdüyor.
Tabi sadece bu kadar değil. Her sınıfın eğer tanımlarsak bir constructor metodu olması gerekir. Constructor metodu, sınıf çağrıldığında otomatik olarak çalıştırılır. C# ‘da constrcutor metodunun sınıf ile aynı adda olması gerekiyor ama PHP ‘de verilmesi gereken isim bellidir ve aşağıdaki gibidir.
function __construct() { }
PHP de Constructor metodun ismi yukarıdaki gibi olmalıdır. Tanımlamak zorunda değiliz ama tanımlamak istiyorsak yukarıdaki gibi olmalı.
Sınıf tanımlama işimiz tamamlandı. Bu sınıfı kullanmak için iki yaklaşım karşımıza çıkıyor.
İlki yazdığımız sınıfı kullanacağımız yerde tanımlamak ama sınıfları site genelinde kullanırken bu yaklaşımı kullanmayacağız. Bir sınıf içerisinde başka sınıf kullanmak gerektiğinde, kullanmamız gereken sınıfı, ilgili sınıf içindeki metot içinde tanımlamamız gerekir.
İkincisi tüm çağırımları tek dosyada yapıp, o dosyayı tüm dosyalara include etmek. Site sayfalarında bu yaklaşımı kullanacağız.
classes klasörümüzde bir dosya daha açalım. Adı da ImportClasses.php olsun.
<?php define("MyCLASS", $_SERVER['DOCUMENT_ROOT'] . "/classes/"); // DataBaseSystem.php dosyamız ana dizinde yer alan classes klasöründe yer alıyor. // define ile de ilgili klasör yolunu bir sabit olarka MyCLASS ismiyle tanımladık. include_once(MyCLASS . "DataBaseSystem.php"); // tanımladığımız sabit ile de sınıfımızı bu dosyaya ekledik. $DB = new DataBaseSystem(); // sınıfımızı tanımladık.
Bu dosyamızı, tüm sınıflarımızı import etmek için kullanacağız. Yani yazdığımız tüm sınıflar bu dosyada yukarıdaki gibi import edilecek.
<?php require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/ImportClasses.php"); ?>
Yukarıdaki kod satırımızı da her sayfamızın en üstüne koyacağız. Böylece tüm sınıflarımızı aslında ilgili sayfaya yazmışız gibi olacak. Şimdi DataBaseSystem sınıfımıza bir metot ekleyelim ve bu metodu sayfalarımızda nasıl kullandığımıza bakalım.
Burada require_once kullandık. require_once kullandığımızda eğer importlarda bir hata varsa sitenin build edilmesi durdurulur. _once olması da require_once satırını kaç kere yazarsak yazalım sadece bir kere import edilir.
<?php class DataBaseSystem { function __construct() { } public function ShowTable($sqlQuery, $arrayValues) // public olmadan dışarıdan çağıramayız { echo "Çalıştı"; } } ?>
ShowTable adlı metodumuzu, index.php sayfamızda kullanalım.
<?php require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/ImportClasses.php"); $sonuclar = $DB->ShowTable("select * from table where column1 = ? and column2 = ?", array(1,2)); require_once($_SERVER['DOCUMENT_ROOT'] . "/includes/HTMLHead.php"); // includes klasöründe, sayfalarımızın HTML Head etiketleri arasında olması gereken kodları tuttuğumuz ayrı bir dosya varsayalım. ?> <body> <h1> index.php </h1> </body> </html>
Gördüğünüz gibi temel bir site düzeni kurmuş olduk. Sınıfları bu şekilde projenize ekleyerek kullanabilirsiniz. Bende son yaptığım projede bu şekilde kullandım.
include ile require temelde aynı işleri yaparlar ancak, require ‘de bir hata çıkarsa, kodların devamı çalışmaz. Include ‘da tam tersi, hata çıksa da diğer kodları çalıştırmaya devam eder.
include_once ile require_once ise işlemleri sadece bir kere yapar. Diyelim ki sayfanıza aynı kodları iki kere eklemek istemiyorsunuz. O zaman *_once kullanmanız gerekir. _once burada “1 kere” anlamı taşır.
PHP Class Kullanımı yazımda bu kadardı. Diğer yazılarımızda görüşmek üzere. Discord’a katılmayı unutmayın.
PHP Dersleri için başlattığım repoya bağlantıya tıklayarak ulaşabilirsiniz. Dersin kodları burada… :) Tüm PHP yazılarım için tıklayabilirsiniz.
Kodla kalın. :)