<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gökalp Kuşçu &#187; php parent</title>
	<atom:link href="http://www.gokalpkuscu.com/tag/php-parent/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gokalpkuscu.com</link>
	<description>yoğun bu aralar</description>
	<lastBuildDate>Tue, 24 Aug 2010 07:45:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>PHP Method yönetimi ( OOP ) yazı dizisi &#8211; 2</title>
		<link>http://www.gokalpkuscu.com/php-method-yonetimi-oop-yazi-dizisi-2</link>
		<comments>http://www.gokalpkuscu.com/php-method-yonetimi-oop-yazi-dizisi-2#comments</comments>
		<pubDate>Wed, 15 Jul 2009 05:24:54 +0000</pubDate>
		<dc:creator>Gökalp Kuşçu</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 3 katmanlı mimari]]></category>
		<category><![CDATA[php class]]></category>
		<category><![CDATA[php ile veri tabanından veri çekme]]></category>
		<category><![CDATA[php interface]]></category>
		<category><![CDATA[php nesne]]></category>
		<category><![CDATA[php nesneye dayalı programla]]></category>
		<category><![CDATA[php object oriented programlama]]></category>
		<category><![CDATA[php parent]]></category>

		<guid isPermaLink="false">http://www.gokalpkuscu.com/?p=157</guid>
		<description><![CDATA[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: &#8220;public-&#62;heryerden ulaşılabilen&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p>Şimdi gelelim konumuza, ellerimizi bağladık okumaya başladık.</p>
<p><span id="more-157"></span></p>
<p>Temel olarak küçük bir kaç açıklık yapmak gerekirse:</p>
<p>&#8220;<strong>public</strong>-&gt;heryerden ulaşılabilen&#8221; ,<br />
&#8220;<strong>private</strong>-&gt;class içinde ulaşabileceğiniz&#8221;</p>
<p>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 <strong>&#8220;class&#8221;</strong> kelimesi ile başlar eğer bir sınıf ile kalıtım sağlanacaksa <strong>&#8220;extends&#8221;</strong> kullanılır ve son olarak bir interface implement edilecekse <strong>&#8220;implements&#8221;</strong> kelimesi kullanılır.</p>
<p><strong>Bir class n kadar interface alabilir fakat, 1 tane kalıtım ile sınıf alabilir. :D</strong></p>
<p>Betik:</p>
<pre class="brush:php">
< ?php

// 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 {}
?>
</pre>
<p>Evet arkadaşlar şimdi kısaca object oriented mantığındanda bahsedim şimdi ben kendi adımı kullanarak<strong> &#8220;gokalp&#8221;</strong> 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 :)</p>
<p>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. :D Bunun yanında soyut sınıfımızda var tabi ama  onu 3. yazı dizisine saklayalım <strong>&#8220;abstract&#8221;.</strong></p>
<p>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.</p>
<pre class="brush:php">
< ?php
/**
* @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;
  }
}
?>
</pre>
<p>Ş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.</p>
<p>Şimdi ilk olarak şunu söyleyelim, nerden kalıtım almışım <strong>database_functions</strong>, aslından arkaplanda database_function&#8217;da connection class&#8217;ı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.</p>
<p>&#8220;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 <strong>sunum(janjanlı web sitemizin ara yüzü), iş katmanı(class_video) gerekli müdahaleler ve veri katmanı yaz abi bunu diye&#8230; </strong>ekstra bilgi idi :)&#8221;</p>
<blockquote><p>public function getVideo($id)</p></blockquote>
<p>Public olan getVideo methoduna dışardan bir nesne ile ulaşalım şimdi.</p>
<pre class="brush:php">
< ?php 

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);
?>
</pre>
<p>ben sadece <strong>null</strong> işlemden bahsedim, <strong>null </strong>dediğimizde method içine giden <strong>null</strong> değerini zaten kontrol etmiştik, buna göre ya bir video yu getiriyordu id göre ya da <strong>null</strong> değer aldığında 10 tane video getiriyordu. null aldığı için 10 tane videoyu getirecek.Peki bunlara nasıl ulaşacağım ?</p>
<p>Ş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,</p>
<pre class="brush:php">

$video_buffer[] = array (
'vID' =&gt; $video['vID'],
'vLink' =&gt; $video['vLink'],
'vName' =&gt;  $video['vName'],
'vFileName' =&gt; $video['vFileName']
);
</pre>
<p>Burda açığım diziye her gelen satırımdaki veriyi satır olarak alıp bir indis atıyorum, mesela,</p>
<blockquote><p>1. için vID[0] vName[0]<br />
2. için vID[1] vName[1]<br />
3. için vID[2] vName[2]</p></blockquote>
<p>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.</p>
<pre class="brush:php">
< ?php

include "class_video.php";

   $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']);           

?>
</pre>
<p>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 &#8220;parent&#8221; extend ettiğin classın methodlarını çağırmak içindir vs gibi&#8230;.</p>
<p>Sevgi ve saygılarımla<br />
gökalp kuşçu</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gokalpkuscu.com/php-method-yonetimi-oop-yazi-dizisi-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
