Php Dersleri
2026 Güncel

PHP Dersleri – PDO Object Mapping

4 dk okuma süresi 519 görüntülenme 28.09.2023 4.9 (18 değerlendirme)

Merhaba arkadaşlar phphocasi.com.tr için hazırladığımız eğitim serimizde  bu ders PDO Object Mapping olayını göreceğiz.  Object mapping olayı sayesinde veri tabanından gelen bilgileri bir class gibi kullanıp hatta istersek bu classa ek fonksiyonlar tanımlayarak bütün işlerimizi bu class içerisinde halledebiliyoruz. Bu classı kendimize göre özelleştirmek tamamen bizim elimizde. Sadece sütün isimlerimizi class değişkeni olarak kullanmamız yeterli oluyor.

 

Object Mapping

Object mapping aslında PDO::FETCH_OBJECT statik sabitinin biraz daha gelişmiş halidir. object mapingi kullanabilmek için setFetchMode(PDO::FETCH_CLASS,”CLASS_NAME”) şeklinde kullanabiliyoruz. İşin daha da güzeli bu classı tanımlamamıza gerek yok ama tanımlamayacaksak eğer  FETCH_OBJECT kullanmaktan farkı kalmıyor. Şimdi daha fazla kafa karıştırmadan her zamanki gibi daha iyi anlamak adına  örneğimize geçelim.

 

Öncelikle veri tabanı yapımızı hatırlayalım. Kullanıcılar tablomuzun yapısı aşağıdaki şekildeydi.

 

 

 

 

Şimdi örneğimizi yapalım. Örneğimizde kullanıcının adı soyadı, kullanıcı adı ve posta bilgisini tablo halinde ekrana yazdıralım.

 

<?php // Veri Tabanı Bağlantısı. try { $db = new PDO("mysql:host=localhostdbname=mobilhanem", "root", "") $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) } catch ( PDOException $e ){ print $e->getMessage() } class Kullanicilar { public function kullaniciBilgisi() { return " <table border="1"> <tr> <td> Kullanıcı Adı</td> <td> :</td> <td> ".$this->kullanici_adi."</td> </tr> <tr> <td> Ad Soyad</td> <td> :</td> <td> ".$this->ad_soyad."</td> </tr> <tr> <td> E-Posta</td> <td> :</td> <td> ".$this->posta."</td> </tr> </table>" } } $kullanicilar = $db->query("select * from kullanicilar") // sorgumuzu yaptık $kullanicilar->setFetchMode(PDO::FETCH_CLASS,"Kullanicilar") // fetch modu belirttik foreach($kullanicilar as $kullanici) { echo $kullanici->kullaniciBilgisi() } 

 

Bizim veri tabanımızda kullaniciBilgisi() fonksiyonu bulunmazken biz FETCH_CLASS sayesinde fonksiyonumuzu kullandık.  Tek sayfa için gereksiz olabilir ama büyük bir sistemde her seferinde aynı taslağı yazmak yerine sınıfta tanımlayıp tek bir fonksiyon ile kullanmak daha güzel olur.

setFetchMode() yerine daha kısa olan fetchAll() ile sorgumuzu tek satıra indirebiliriz.

 

<?php // Veri Tabanı Bağlantısı. try { $db = new PDO("mysql:host=localhostdbname=mobilhanem", "root", "") $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) } catch ( PDOException $e ){ print $e->getMessage() } class Kullanicilar { public function kullaniciBilgisi() { return " <table border="1"> <tr> <td> Kullanıcı Adı</td> <td> :</td> <td> ".$this->kullanici_adi."</td> </tr> <tr> <td> Ad Soyad</td> <td> :</td> <td> ".$this->ad_soyad."</td> </tr> <tr> <td> E-Posta</td> <td> :</td> <td> ".$this->posta."</td> </tr> </table>" } } $kullanicilar = $db->query("select * from kullanicilar")->fetchAll(PDO::FETCH_CLASS,"Kullanicilar") // sorgumuzu yaptık foreach($kullanicilar as $kullanici) { echo $kullanici->kullaniciBilgisi() } 

Object mapping olayı oldukça kullanışlı ve geliştirmesi tamamen bizim hayal gücümüze bırakılmış bir yapıdır. Şimdilik basit bir örnek yaparak anlattık.

 

Bir dersimizin daha sonuna geldik. Bir sonraki dersimizde görüşmek üzere ?

Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.

Tüm php dersleri için tıklayınız..

27
Makaleyi Değerlendirin

Bu makale işinize yaradı mı? Puan verin!

Okuyucu puanları makalelerimizin arama motorlarında öne çıkmasına ve güncellenmesine destek olur.

4.9 / 5 (Toplam 18 oy kullanıldı)

Sıkça Sorulan Sorular (SSS)

Bu makale ve teknik konuyla ilgili detaylar

PHP Dersleri &#8211; PDO Object Mapping makalesindeki yöntemler hangi sürümlerde geçerlidir?

İçerikteki çözümler ve kod örnekleri güncel PHP 8.x ve modern web standartları referans alınarak test edilmiştir.

Bu konuda başka makalelere nereden ulaşabilirim?

Sayfanın sağ tarafındaki Kategori Menüsü ve ilgili yazılar alanından benzer teknik rehberleri inceleyebilirsiniz.