Bugünkü yazıdan kısaca bahset gerekirsen; veri tabanından gelen değişkenleri sınıfımızdan dışarı aktarmak ve kullanmak olucak, bu yazıyı anlatırken bir veri tabanı ve bu veri tabanına bağlanmış bir sınıf olması lazım bunu önceden görmüştük, orayı inceleyerek bu paketi oluşturabilirsiniz.

Şimdi gelelim konumuza, ellerimizi bağladık okumaya başladık.


Temel olarak küçük bir kaç açıklık yapmak gerekirse:

"public->heryerden ulaşılabilen" ,
"private->class içinde ulaşabileceğiniz"

ilk olarak PHP5 ile gelen nesneye dayalı program için öncedende bildiğimiz gibi belli bir grammer yapımız var yani dil bilgisi. Şimdi eğer bir sınıf oluşturmak istiyorsak bu "class" kelimesi ile başlar eğer bir sınıf ile kalıtım sağlanacaksa "extends" kullanılır ve son olarak bir interface implement edilecekse "implements" kelimesi kullanılır.

Bir class n kadar interface alabilir fakat, 1 tane kalıtım ile sınıf alabilir.


// Bu kalıtımsız ve interface implement edilmemiş bir class.
class gokalp {}

//Şimdi kalıtım alıyorum
class gokalp extends kuscu {}

//Şimdi interface alıyorum
class gokalp implements int1 {}

//Şimdi her iksinide alıyorum
class gokalp extends kuscu implements int1 {}

//Şimdi bir çok interface alıyorum
class gokalp extends kuscu implements int1 implements int2...n {}



Evet arkadaşlar şimdi kısaca object oriented mantığındanda bahsedim şimdi ben kendi adımı kullanarak "gokalp" yani bir class oluşturdum kendimi modelledim, şimdi ailemdeki bazı özellikleri ben kendimde yeniden yazmaktansa ailemden kalıtım aldım ve kuscu ailesinde olan ve bendede olucak genetiksel özellikleri yeniden yazmak yerine ailem bana verdi

Interface konusuna fazla takmayın bence toplu proje geliştirme aşamasında gerçekten çok işe yaricak bir yapı fakat şuan sadece yazmak istediğim için yazdım. Bunun yanında soyut sınıfımızda var tabi ama onu 3. yazı dizisine saklayalım "abstract".

Evet şimdi herşeyden biraz bahsettik ve mantığı vermeye çalıştık, tabi bu nesneye dayalı konusu bu bir kaç satır ile ifade edilecek kadarda kısa değil tabi ki.




/**
* @author Gokalp Kuscu // www.gokalpkuscu.com
* @copyright 2009
*/

class class_video extends database_functions {


public function getVideo($id)
{
$sqlQuery = "SELECT
videos.vID,
videos.vFileName,
videos.vLink,
videos.vName
FROM
videos";

if(isset($id) != null):
//Gelen paramtere null değil, bu yüzden id ile birlikte bilgiyi getir.
$sqlQuery.= " WHERE videos.vID = $id ORDER BY videos.vID DESC LIMIT 1";
else:
//Gelen parametre null bu yüzden tümünü getir. 10 adet getir sadece.
$sqlQuery.= " ORDER BY videos.vID DESC LIMIT 10";
endif;

$r=parent::query($sqlQuery);
while ($video = parent::database_fetch_array($r))
{
$video_buffer[] = array (
'vID' => $video['vID'],
'vLink' => $video['vLink'],
'vName' => $video['vName'],
'vFileName' => $video['vFileName']
);
}
return $video_buffer;
}
}



Şimdi bu video getirme class için değerlendirme yazalım, bu benim eskiden yazdığım bir class, burda class içinde tam anlamıyla değişken yapılarını kullanmamışım ama böyle anladığımı ve anlicağınızı düşünerek böyle yazmak istedim.

Şimdi ilk olarak şunu söyleyelim, nerden kalıtım almışım database_functions, aslından arkaplanda database_function'da connection class'ından kalıtım alıyor ve encapsulation data hiding,private connection class vs.. ile yaptıracağım işin direk olarak veri tabanı ile haberleşmemesini sağlıyorum şöyle düşünün.

"Bir PHP web sayfası geliştirirken genelde bir tuşa basılır ve arka plan kod direk bunu veri tabanına yazar burda böyle olmuyor, ilk olarak class_video sınıfıma ulaşıyorum eğer gerekli kontroller yazılmışsa mesela Türkçe karakter sorunu veya xss atakaları bunları bu classım içinde süzgeçten geçiriyorum sonra veri tabanı kısmında çalışacak olan işçilerime veriyorum bu veri sağlam veya böyledir yaz diye onlarda veri tabanına yazıyor, böylece 3 katmanda işi yaptırmış oluyoruz sunum(janjanlı web sitemizin ara yüzü), iş katmanı(class_video) gerekli müdahaleler ve veri katmanı yaz abi bunu diye... ekstra bilgi idi "

public function getVideo($id)

Public olan getVideo methoduna dışardan bir nesne ile ulaşalım şimdi.





include "class_video.php";

class_video nesne = new class_video();

//nesneye null değerini gönderiyorum.
nesne.getVideo(null);

//nesneye null değerini gönderiyorum.
nesne.getVideo(1);




ben sadece null işlemden bahsedim, null dediğimizde method içine giden null değerini zaten kontrol etmiştik, buna göre ya bir video yu getiriyordu id göre ya da null değer aldığında 10 tane video getiriyordu. null aldığı için 10 tane videoyu getirecek.Peki bunlara nasıl ulaşacağım ?

Şimdi ben burda şöyle bir mantık yürütmüşüm bir dizi açmışım ve bu dizi yapısını veri tabanı modeli gibi kullanmışım satırlar ve sütunlar, hemen açıklayayım,



$video_buffer[] = array (
'vID' => $video['vID'],
'vLink' => $video['vLink'],
'vName' => $video['vName'],
'vFileName' => $video['vFileName']
);



Burda açığım diziye her gelen satırımdaki veriyi satır olarak alıp bir indis atıyorum, mesela,

1. için vID[0] vName[0]
2. için vID[1] vName[1]
3. için vID[2] vName[2]

Methodumda dizimi attım, nesneden çağırdım, geriye ne döndürmeli ? tabi ki bu diziyi bu dizi döndüğünde işlemimiz bitmiş olucak hemen ona bakalım.





include "class_video.php";

class_video nesne = new class_video();

//nesneye null değerini gönderiyorum.
$sonuc = nesne.getVideo(null);

//nesneye null değerini gönderiyorum.
//$sonuc = nesne.getVideo(1);

//diziye bakmak istersek, tüyo
print_r($sonuc);

//şimdi deşkenleri alalım, ben sadece vName leri basacağım.
for($i=0;$i<=count($sonuc)-1;i++)
print($sonuc[$i]['vName']);







Evet arkadaş bir soru, sıkıntı olursa paylaşalım bu arada bu classların içindeki syntax yapısını bilmiyorsanız en basitinden php için bilmiyorsanız sıkıntı yaratabilir, mesela "parent" extend ettiğin classın methodlarını çağırmak içindir vs gibi....

Sevgi ve saygılarımla
gökalp kuşçu
http://www.gokalpkuscu.com

Tags: method, oop, php

Share 

Add a Comment

You need to be a member of Open Source University Meetup to add comments!

Join this social network


Webinars

OSUM members get exclusive access to a series of webinars on the most innovative open source technologies via the OSUM Webinar Series.

If you missed any of the previous OSUM Webinars, click here to listen to the replays of the previous sessions.

News

Download Free OpenOffice.org Guide For Creating Large Documents One of the advantages of OpenOffice.org is its ability to handle large word processing documents such as theses and research papers. Download this free guide now and read expert advice on writing with OpenOffice.org.

Get On Board with JavaFX & the Tech Train Game

Get a hands-on introduction to JavaFX when you play the Tech Test Train - Ride the train, test your knowledge of JavaFX technology, and earn points. Click HERE to play.

Working With ZFS Snapshots Download the free ZFS Snapshots How-To Guide to learn how to create and use the backup and restore capabilities of ZFS snapshots.

© 2009   Created by Gary Serda

Badge  |  Report an Issue  |  Privacy  |  Terms of Service