<?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>Murat Deniz ONAT</title>
	<atom:link href="http://muratonat.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://muratonat.com</link>
	<description>PHP ve yardımcı diller için</description>
	<lastBuildDate>Wed, 22 Dec 2010 16:49:25 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ubuntu&#8217;da Thunderbird için indicator applet eklentisi</title>
		<link>http://muratonat.com/ubuntuda-thunderbird-icin-indicator-applet-eklentisi/</link>
		<comments>http://muratonat.com/ubuntuda-thunderbird-icin-indicator-applet-eklentisi/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 16:45:41 +0000</pubDate>
		<dc:creator>Murat Deniz ONAT</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[indicator applet]]></category>
		<category><![CDATA[thunderbird]]></category>

		<guid isPermaLink="false">http://muratonat.com/?p=32</guid>
		<description><![CDATA[Geçenlerde Ubuntu&#8217;da Thunderbird için indicator applet ayarı var mıdır diye araştırma gereği duydum. Aslında e-posta için bir client kullanmıyordum. Fakat Thunderbird yükleyince indicator applet ile Thunderbird kullanma yollarını araştırdım.
http://ubublogger.wordpress.com/2010/09/02/new-version-1-1/
Bu adreste epey güzel bir eklenti buldum.
Öncelikle
sudo add-apt-repository ppa:ruben-verweij/thunderbird-indicator
Komutu ile repo adresini ekliyoruz.
sudo apt-get update
ile güncelledikten sonra
sudo apt-get install xul-ext-indicator
ile yeni eklentiyi kuruyoruz.
Aslında hala geliştirme aşamasında görünüyor. [...]]]></description>
			<content:encoded><![CDATA[<p>Geçenlerde Ubuntu&#8217;da Thunderbird için indicator applet ayarı var mıdır diye araştırma gereği duydum. Aslında e-posta için bir client kullanmıyordum. Fakat Thunderbird yükleyince indicator applet ile Thunderbird kullanma yollarını araştırdım.</p>
<p><a href="http://ubublogger.wordpress.com/2010/09/02/new-version-1-1/">http://ubublogger.wordpress.com/2010/09/02/new-version-1-1/</a></p>
<p>Bu adreste epey güzel bir eklenti buldum.<br />
Öncelikle</p>
<blockquote><p>sudo add-apt-repository ppa:ruben-verweij/thunderbird-indicator</p></blockquote>
<p>Komutu ile repo adresini ekliyoruz.</p>
<blockquote><p>sudo apt-get update</p></blockquote>
<p>ile güncelledikten sonra</p>
<blockquote><p>sudo apt-get install xul-ext-indicator</p></blockquote>
<p>ile yeni eklentiyi kuruyoruz.<br />
Aslında hala geliştirme aşamasında görünüyor. Daha pencereyi indicator applete küçültemesek de en azından e-posta uyarıları ve yeni posta gönderme gibi özellikleri indicator applete eklemek de epey kullanışlı.<br />
Umarım birilerinin işine yarar.</p>
]]></content:encoded>
			<wfw:commentRss>http://muratonat.com/ubuntuda-thunderbird-icin-indicator-applet-eklentisi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5 sınıf yapısı 2</title>
		<link>http://muratonat.com/php-5-sinif-yapisi-2/</link>
		<comments>http://muratonat.com/php-5-sinif-yapisi-2/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 14:02:43 +0000</pubDate>
		<dc:creator>Murat Deniz ONAT</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[php 5]]></category>
		<category><![CDATA[sınıf]]></category>

		<guid isPermaLink="false">http://muratonat.com/?p=14</guid>
		<description><![CDATA[Kaldığımız yerden devam edelim.
Sınıflarda bazen sabit değerler olması ve tüm yapının o sabitlere göre çalışması gerekebilir. Pi sayısı gibi kesinlikle değişmeyecek verileri tutan bu sabitlere &#8220;constant&#8221; denir ve &#8220;const&#8221; ile tanımlanırlar. Ayrıca bu sabitler public static özellklerine sahiptir.
Yukarıdaki Db sınıfına bakarsanız dört tane sabiti olduğunu göreceksiniz. Bunlardan ilk iki sabiti bu sınıfın bağlanabileceği veritabanı sunucu [...]]]></description>
			<content:encoded><![CDATA[<p>Kaldığımız yerden devam edelim.</p>
<p>Sınıflarda bazen sabit değerler olması ve tüm yapının o sabitlere göre çalışması gerekebilir. Pi sayısı gibi kesinlikle değişmeyecek verileri tutan bu sabitlere &#8220;constant&#8221; denir ve &#8220;const&#8221; ile tanımlanırlar. Ayrıca bu sabitler public static özellklerine sahiptir.<br />
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span>
<span class="kw2">class</span> Db<span class="br0">&#123;</span>
 <span class="kw2">const</span> <a href="http://www.php.net/mysql"><span class="kw3">MySql</span></a> <span class="sy0">=</span> <span class="st_h">'mysql'</span><span class="sy0">;</span>
 <span class="kw2">const</span> PostgreSql <span class="sy0">=</span> <span class="st_h">'postgresql'</span><span class="sy0">;</span>
&nbsp;
 <span class="kw2">const</span> FETCH_ASSOC <span class="sy0">=</span> <span class="st_h">'fetch_assoc'</span><span class="sy0">;</span>
 <span class="kw2">const</span> FETCH_OBJECT <span class="sy0">=</span> <span class="st_h">'fetch_object'</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div></p>
<p>Yukarıdaki Db sınıfına bakarsanız dört tane sabiti olduğunu göreceksiniz. Bunlardan ilk iki sabiti bu sınıfın bağlanabileceği veritabanı sunucu tipleri olarak düşünürsek, sabit olmaları yerinde bir karar gibi. Diğer ikisi de çekilecek verinin tipini belirtecek.</p>
<p>Sınıfları birbirine eklemek ve standartları kullanmak amaçlı birşeyler yazmak için örnekler verelim.</p>
<p>Başlangıç seviye de olsa PHP bilgisi olanlar farklı veritabanı bağlantısı için farklı fonksiyonlar kullanıldığını bilir. Bunların hepsini aynı şekilde kullanacak bir sınıf yazalım. Aslında veritabanı örneği biraz garip kaçıyor bunun için. Malum PDO, AdoDb gibi standart kütüphaneler zaten var. Fakat bizim buradaki amacımız sınıf yazmak <img src='http://muratonat.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Öncelikle her şekilde sabit olacak fonksiyonları belirleyelim.<br />
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span>
<span class="kw2">interface</span> Db_Connection_Interface<span class="br0">&#123;</span>
&nbsp;
 <span class="kw2">public</span> <span class="kw2">function</span> connect<span class="br0">&#40;</span><span class="re0">$username</span><span class="sy0">,</span><span class="re0">$password</span><span class="sy0">,</span><span class="re0">$host</span><span class="sy0">,</span><span class="re0">$database</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
 protected <span class="kw2">function</span> query<span class="br0">&#40;</span><span class="re0">$sql</span><span class="sy0">=</span><span class="kw4">null</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
 <span class="kw2">public</span> <span class="kw2">function</span> setSql<span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
 <span class="kw2">public</span> <span class="kw2">function</span> <a href="http://www.php.net/settype"><span class="kw3">setType</span></a><span class="br0">&#40;</span><span class="re0">$type</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
 <span class="kw2">public</span> <span class="kw2">function</span> execute<span class="br0">&#40;</span><span class="re0">$type</span><span class="sy0">=</span><span class="kw4">null</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="br0">&#125;</span></pre></div></div></p>
<p>Bu sınıf &#8220;class&#8221; ile başlamıyor ve fonksiyonlarında herhangi bir belirleme yapılmamış. Bu açıdan epey farklı ve aslında çok kullanışlı.<br />
Bu arayüz(interface) sınıfı. Bir sınıfın neleri nasıl yapacağını belirler. Birden fazla kişinin çalıştığı bir projede aslında farklı şekilde çalışan ama aynı şekilde çalışması istenen birşeyler varsa interface hazırlanır ve kodun buna göre yazılması istenir.<br />
Bu arayüzde tanımladığımız fonksiyonlara bir bakalım.<br />
- connect fonksiyonu, kullanıcı adı, parola, host ve veritabanı ismi alarak bağlantıyı oluşturur.<br />
- query fonksiyonu, belirtilen sql sorgusunu çalıştırılmaya hazırlar.<br />
- setSql fonksiyonu, hangi sql sorgusunun çalışacağını belirtir.<br />
- setType fonksiyonu, sorgu çalıştırıldıktan sonra dönecek olan veri tipini belirler.<br />
- execute fonksiyonu, hazırlanmış sorguyu çalıştırır.</p>
<p>Arayüz sınıflarında herhangi bir şekilde fonksiyonlara kod yazılmaz. Sadece hangi parametreleri alacak ve ne sonuç döndürecek olduğu yazılır. Bizim örneğimiz buna çok uygun. Mysql ve Postgresql veritabanlarını kullanan iki farklı class yazacağız fakat ikisini de aynı şekilde kullanabiliyor olmamız lazım.<br />
Bu iki sınıfı yazmadan önce ortak olarak kullanılacak fonksiyonları yazacağımız sınıfımızı yazalım.</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span>
&nbsp;
abstract <span class="kw2">class</span> Db_Connection_Abstract implements Db_Connection_Interface <span class="br0">&#123;</span>
protected <span class="re0">$sql</span><span class="sy0">;</span>
&nbsp;
protected <span class="re0">$type</span><span class="sy0">;</span>
&nbsp;
<span class="kw2">public</span> <span class="kw2">function</span> setSql<span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
<span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">sql</span> <span class="sy0">=</span> <span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re0">$sql</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
final <span class="kw2">public</span> <span class="kw2">function</span> <a href="http://www.php.net/settype"><span class="kw3">setType</span></a><span class="br0">&#40;</span><span class="re0">$type</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
<span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">type</span> <span class="sy0">=</span> <span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re0">$type</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Burada da daha farklı bir yazım görüyorsunuz. abstract classlar nesne oluşturamaz ama normal sınıflara eklenebilirler. Ayrıca arayüz sınıfımızın bu sınıfa eklendiğini fakat extend yerine implement ile eklendiğini farkedeceksiniz. Arayüz sınıfları extend ile sınıfı genişletmezler. Sadece sınıfın şeklini belli ederler. Eğer bu sınıfta arayüz sınıfında belirtilen fonksiyonlardan bir tanesini bile farklı şekilde oluştursaydık PHP hatası ile karşılaşırdık. Örneğin</p>
<p>public function setSql($sql){<br />
$this-&gt;sql = (string) $sql;<br />
}<br />
yerine</p>
<p>public function setSql(){<br />
$this-&gt;sql = &#8221;;<br />
}</p>
<p>yazsaydık setSql fonksiyonu bir tane parametre almalıdır diye bir hata alırdık.<br />
Ayrıca setType fonksiyonunun başında da yeni bir belirteç var.<br />
- Final fonksiyonlar daha sonra tekrar tanımlanamazlar. Yazıldıkları gibi kalırlar. Abstract olmaması koşuluyla sınıflar da final olabilir ve başka bir sınıfa eklenmesi engellenebilir. Abstract sınıflar başka bir sınıfa eklenmek zorunda olduğundan final belirtecini alamazlar.</p>
<p>Şimdi asıl classlarımızı yazalım<br />
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span>
<span class="kw2">class</span> Db_MySql <span class="kw2">extends</span> Db_Connection_Abstract implements Db_Connection_Interface<span class="br0">&#123;</span>
&nbsp;
 <span class="kw2">public</span> <span class="kw2">function</span> connect<span class="br0">&#40;</span><span class="re0">$username</span><span class="sy0">,</span><span class="re0">$password</span><span class="sy0">,</span><span class="re0">$host</span><span class="sy0">,</span><span class="re0">$database</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="re0">$conn</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_connect"><span class="kw3">mysql_connect</span></a><span class="br0">&#40;</span><span class="re0">$host</span><span class="sy0">,</span> <span class="re0">$username</span><span class="sy0">,</span> <span class="re0">$password</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="co1">//veritabanı bağlantısını hazırlayalım</span>
 <span class="co2">#veritabanı bağlantısını kontrol edelim.
</span> <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="re0">$conn</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 throw <span class="kw2">new</span> Exception<span class="br0">&#40;</span><span class="st_h">'veritabanı bağlantısı sağlanamadı.'</span><span class="br0">&#41;</span><span class="sy0">;</span>
 <span class="br0">&#125;</span>
 <a href="http://www.php.net/mysql_select_db"><span class="kw3">mysql_select_db</span></a><span class="br0">&#40;</span><span class="re0">$database</span><span class="sy0">,</span><span class="re0">$conn</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="co1">//veritabanını seçelim</span>
&nbsp;
 <span class="br0">&#125;</span>
&nbsp;
 protected <span class="kw2">function</span> query<span class="br0">&#40;</span><span class="re0">$sql</span><span class="sy0">=</span><span class="kw4">null</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="re0">$sql</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">null</span> <span class="sy0">!==</span> <span class="re0">$sql</span><span class="br0">&#41;</span> ? <span class="re0">$sql</span> <span class="sy0">:</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">sql</span><span class="sy0">;</span>
 <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="re0">$resource</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//protected query değişkenine hazırlanmış sorguyu atayalım</span>
 <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$resource</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="kw1">return</span> <span class="re0">$resource</span><span class="sy0">;</span>
 <span class="br0">&#125;</span>
 <span class="br0">&#125;</span>
 throw <span class="kw2">new</span> Exception<span class="br0">&#40;</span><span class="st_h">'çalıştırmak istediğiniz sorguda bir problem var lütfen sorguyu kontrol ediniz.'</span><span class="br0">&#41;</span><span class="sy0">;</span>
 <span class="br0">&#125;</span>
&nbsp;
 <span class="kw2">public</span> <span class="kw2">function</span> setSql<span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/is_string"><span class="kw3">is_string</span></a><span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 throw <span class="kw2">new</span> Exception<span class="br0">&#40;</span><span class="st_h">'sql sorgusu string olmak zorundadır'</span><span class="br0">&#41;</span><span class="sy0">;</span>
 <span class="br0">&#125;</span>
 parent<span class="sy0">::</span><span class="me2">setSql</span><span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// abstract sınıfta tanımlanmış olan fonksiyona biraz eklenti yapıp sonra abstract sınıftaki halini çağırıyoruz.</span>
 <span class="br0">&#125;</span>
&nbsp;
 <span class="kw2">public</span> <span class="kw2">function</span> execute<span class="br0">&#40;</span><span class="re0">$type</span><span class="sy0">=</span><span class="kw4">null</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="re0">$type</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">null</span> <span class="sy0">!==</span> <span class="re0">$type</span><span class="br0">&#41;</span> ? <span class="re0">$type</span> <span class="sy0">:</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">type</span><span class="sy0">;</span>
 <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$type</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="re0">$resource</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
 <span class="kw1">switch</span><span class="br0">&#40;</span><span class="re0">$type</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="kw1">case</span> Db<span class="sy0">::</span><span class="me2">FETCH_ASSOC</span> <span class="sy0">:</span>
 <span class="re0">$return</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
 <span class="kw1">while</span><span class="br0">&#40;</span><span class="re0">$result</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_fetch_assoc"><span class="kw3">mysql_fetch_assoc</span></a><span class="br0">&#40;</span><span class="re0">$resource</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="re0">$return</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$result</span><span class="sy0">;</span>
 <span class="br0">&#125;</span>
 <span class="kw1">break</span><span class="sy0">;</span>
 <span class="kw1">case</span> Db<span class="sy0">::</span><span class="me2">FETCH_OBJECT</span> <span class="sy0">:</span>
 <span class="kw1">default</span><span class="sy0">:</span>
 <span class="re0">$return</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
 <span class="kw1">while</span><span class="br0">&#40;</span><span class="re0">$result</span> <span class="sy0">=</span> mysql_fetch_pbject<span class="br0">&#40;</span><span class="re0">$resource</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="re0">$return</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$result</span><span class="sy0">;</span>
 <span class="br0">&#125;</span>
 <span class="kw1">break</span><span class="sy0">;</span>
 <span class="br0">&#125;</span>
 <span class="br0">&#125;</span>
 <span class="kw1">return</span> <span class="re0">$return</span><span class="sy0">;</span>
 <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></p>
<p>Abstract sınıfımızı extend, arayüzümüzü implement ederek mysql sınıfımızı yazmaya başladık. Fonksiyonları aynı yukarıda anlattığımız işlevleri yerine getirecek şekilde yazdık. Burada sınıflarla ilgili yeni olan tek şey setSql fonksiyonunu yeniden tanımlamamız. Eğer üst sınıflardan birinde var olan bir fonksiyon ile aynı isimde bir fonksiyon tanımlarsanız o fonksiyonun üzerine yazılır. Artık üst sınıftaki fonksiyon kullanılmaz olur. Bazen o fonksiyona ekleme yapmak istersiniz işte bu gibi durumlarda parent kullanılır. &#8220;parent&#8221;, üst sınıftaki aynı isimli fonksiyonu çalıştırır. Yani önceden tanımlanmış fonksiyonu da çalıştırır.</p>
<p>Şimdi asıl Db sınıfımızı biraz değiştirelim.</p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span>
<span class="kw2">class</span> Db<span class="br0">&#123;</span>
 <span class="kw2">const</span> <a href="http://www.php.net/mysql"><span class="kw3">MySql</span></a> <span class="sy0">=</span> <span class="st_h">'mysql'</span><span class="sy0">;</span>
 <span class="kw2">const</span> PostgreSql <span class="sy0">=</span> <span class="st_h">'postgresql'</span><span class="sy0">;</span>
&nbsp;
 <span class="kw2">const</span> FETCH_ASSOC <span class="sy0">=</span> <span class="st_h">'fetch_assoc'</span><span class="sy0">;</span>
 <span class="kw2">const</span> FETCH_OBJECT <span class="sy0">=</span> <span class="st_h">'fetch_object'</span><span class="sy0">;</span>
&nbsp;
 <span class="kw2">public</span> static <span class="kw2">function</span> connection<span class="br0">&#40;</span><span class="re0">$type</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="kw1">switch</span><span class="br0">&#40;</span><span class="re0">$type</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="kw1">case</span> Db<span class="sy0">::</span><a href="http://www.php.net/mysql"><span class="kw3">MySql</span></a><span class="sy0">:</span>
 <span class="re0">$connection</span> <span class="sy0">=</span> <span class="kw2">new</span> Db_MySql<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
 <span class="kw1">break</span><span class="sy0">;</span>
 <span class="kw1">case</span> Db<span class="sy0">::</span><span class="me2">PostgreSql</span><span class="sy0">:</span>
 <span class="re0">$connection</span> <span class="sy0">=</span> <span class="kw2">new</span> Db_PostgreSql<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
 <span class="kw1">break</span><span class="sy0">;</span>
 <span class="kw1">default</span><span class="sy0">:</span>
 <span class="re0">$connection</span> <span class="sy0">=</span> <span class="kw4">null</span><span class="sy0">;</span>
 <span class="kw1">break</span><span class="sy0">;</span>
 <span class="br0">&#125;</span>
 <span class="kw1">return</span> <span class="re0">$connection</span><span class="sy0">;</span>
 <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>kullanımı;<br />
<div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span>
try<span class="br0">&#123;</span>
&nbsp;
<span class="re0">$connection</span> <span class="sy0">=</span> Db<span class="sy0">::</span><span class="me2">connection</span><span class="br0">&#40;</span>Db<span class="sy0">::</span><a href="http://www.php.net/mysql"><span class="kw3">MySql</span></a><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">connect</span><span class="br0">&#40;</span><span class="re0">$user</span><span class="sy0">,</span><span class="re0">$pass</span><span class="sy0">,</span><span class="re0">$host</span><span class="sy0">,</span><span class="re0">$dbName</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="co1">// Db_Mysql sınıfını döndürür.</span>
<span class="re0">$connection</span><span class="sy0">-&gt;</span><span class="me1">setSql</span><span class="br0">&#40;</span><span class="st_h">'SELECT * FROM table'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$sonuc</span> <span class="sy0">=</span> <span class="re0">$connection</span><span class="sy0">-&gt;</span><span class="me1">execute</span><span class="br0">&#40;</span>Db<span class="sy0">::</span><span class="me2">FETCH_OBJECT</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="br0">&#125;</span>catch <span class="br0">&#40;</span>Exception <span class="re0">$e</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="kw1">echo</span> <span class="re0">$e</span><span class="sy0">-&gt;</span><span class="me1">getMessage</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div></p>
<p>PostgreSql sınıfı da aynı fonksiyonlar ve aynı işlevler ile yazılacak. Aradaki tek fark sınıf metodları içinde kullanılan fonksiyonların değişik olması.</p>
]]></content:encoded>
			<wfw:commentRss>http://muratonat.com/php-5-sinif-yapisi-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PHP 5 sınıf yapısı</title>
		<link>http://muratonat.com/php-5-sinif-yapisi/</link>
		<comments>http://muratonat.com/php-5-sinif-yapisi/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 11:31:41 +0000</pubDate>
		<dc:creator>Murat Deniz ONAT</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[php 5]]></category>
		<category><![CDATA[sınıf]]></category>

		<guid isPermaLink="false">http://muratonat.com/?p=7</guid>
		<description><![CDATA[Sınıf(class) elemanlarının kullanıldıkları yere göre 3 tipi vardır. Bunlar public, protected ve private&#8217;tir.
public &#8211; sınıf elemanının her şekilde kullanılabileceği anlamına gelir.
protected &#8211; sınıf elemanının sadece aynı sınıf içinden veya eklenmiş sınıflar içinden kullanılabileceği anlamındadır.
private &#8211; sınıf elemanının sadece aynı sınıf içinden kullanılabileceği anlamındadır.
örnek vermek gerekirse;
Öncelikle henüz değeri olmayan sınıf özelliklerini tanımladık.
Bunlar siniflar, okulAdi ve ogrenciSayisi. [...]]]></description>
			<content:encoded><![CDATA[<p>Sınıf(class) elemanlarının kullanıldıkları yere göre 3 tipi vardır. Bunlar public, protected ve private&#8217;tir.<br />
public &#8211; sınıf elemanının her şekilde kullanılabileceği anlamına gelir.<br />
protected &#8211; sınıf elemanının sadece aynı sınıf içinden veya eklenmiş sınıflar içinden kullanılabileceği anlamındadır.<br />
private &#8211; sınıf elemanının sadece aynı sınıf içinden kullanılabileceği anlamındadır.</p>
<p>örnek vermek gerekirse;</p>
<div id="wpshdo_7" class="wp-synhighlighter-outer"><div id="wpshdt_7" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_7"></a><a id="wpshat_7" class="wp-synhighlighter-title" href="#codesyntax_7"  onClick="javascript:wpsh_toggleBlock(7)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_7" onClick="javascript:wpsh_code(7)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_7" onClick="javascript:wpsh_print(7)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_7" class="wp-synhighlighter-inner" style="display: block;"><div class="php" style="font-family:monospace;"><ol><li class="li1"><pre class="de1"><span class="kw2">&lt;?php</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="co2">#Okul isimli bir sınıfımız olsun</span></pre></li><li class="li1"><pre class="de1"> <span class="kw2">class</span> Okul<span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1"> <span class="kw2">public</span> <span class="re0">$siniflar</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"> <span class="kw2">private</span> <span class="re0">$okulAdi</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"> protected <span class="re0">$ogrenciSayisi</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw2">public</span> <span class="kw2">function</span> __construct<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">siniflar</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">'1-A'</span><span class="sy0">,</span><span class="st_h">'1-B'</span><span class="sy0">,</span><span class="st_h">'1-C'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">okulAdi</span> <span class="sy0">=</span> <span class="st_h">'Benim Okulum'</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">ogrenciSayisi</span> <span class="sy0">=</span> <span class="nu0">75</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"> <span class="br0">&#125;</span></pre></li><li class="li1"><pre class="de1"> <span class="br0">&#125;</span></pre></li></ol></div></div></div>
<p>Öncelikle henüz değeri olmayan sınıf özelliklerini tanımladık.<br />
Bunlar siniflar, okulAdi ve ogrenciSayisi. Dikkat ederseniz siniflar public yani her yerden erişilebilir, okulAdi sadece Okul sınıfının ve ona bağlı diğer sınıfların içinden erişilebilir, ogrenciSayisi ise sadece ve sadece Okul sınıfı içinden erişilebilir. Bu bir tür kısıtlama. Standartlara uygun kod yazmakta epey faydası var.</p>
<p>__construct fonksiyonu ise nesne oluşturulduğu anda kendiliğinden çalışır. Yani nesne oluşturulduğu gibi önceden hiçbir değer taşımayan bu üç elemana __construct fonksiyonu içine belirtilen değerler eklenecektir. buradaki $this içinde bulunulan nesneyi belirtir ve içinde bulunulan ya da o nesneye bağlı her türlü eleman genellikle $this ile kullanılabilir. Genellikle yazıyorum çünkü onun da bir istisnası var. Şimdilik $this&#8217;in nesne içindeki elemanlara erişmek için kullanıldığını bilmek yeterli.</p>
<p>Kullanıma gelince;</p>
<div id="wpshdo_8" class="wp-synhighlighter-outer"><div id="wpshdt_8" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_8"></a><a id="wpshat_8" class="wp-synhighlighter-title" href="#codesyntax_8"  onClick="javascript:wpsh_toggleBlock(8)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_8" onClick="javascript:wpsh_code(8)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_8" onClick="javascript:wpsh_print(8)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_8" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span>
<span class="co2">#öncelikle Okul nesnemizi oluşturuyoruz.
</span> <span class="re0">$okul</span> <span class="sy0">=</span> <span class="kw2">new</span> Okul<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
 <span class="co2">#dışarıdan erişebildiğimiz public olan tek eleman siniflar olduğundan bunu direk kullanabiliriz.
</span> <a href="http://www.php.net/print_r"><span class="kw3">print_r</span></a><span class="br0">&#40;</span><span class="re0">$okul</span><span class="sy0">-&gt;</span><span class="me1">siniflar</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>
<p>çıktısı<br />
array(0 =&gt; 1-A,<br />
1 =&gt; 1-B,<br />
2 =&gt; 1-C)<br />
gibi olacaktır. public olan &#8220;siniflar&#8221; haricinde hiçbir elemana $okul nesnesi ile direk erişemeyiz.</p>
<p>Şimdi diğerlerine bakalım.</p>
<pre></pre>
<div id="wpshdo_9" class="wp-synhighlighter-outer"><div id="wpshdt_9" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_9"></a><a id="wpshat_9" class="wp-synhighlighter-title" href="#codesyntax_9"  onClick="javascript:wpsh_toggleBlock(9)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_9" onClick="javascript:wpsh_code(9)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_9" onClick="javascript:wpsh_print(9)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_9" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span>
&nbsp;
<span class="co2">#Okul isimli bir sınıfımız olsun
</span> <span class="kw2">class</span> Okul<span class="br0">&#123;</span>
 <span class="kw2">public</span> <span class="re0">$siniflar</span><span class="sy0">;</span>
 <span class="kw2">private</span> <span class="re0">$okulAdi</span><span class="sy0">;</span>
 protected <span class="re0">$ogrenciSayisi</span><span class="sy0">;</span>
&nbsp;
<span class="kw2">public</span> <span class="kw2">function</span> __construct<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">siniflar</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">'1-A'</span><span class="sy0">,</span><span class="st_h">'1-B'</span><span class="sy0">,</span><span class="st_h">'1-C'</span><span class="br0">&#41;</span><span class="sy0">;</span>
 <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">okulAdi</span> <span class="sy0">=</span> <span class="st_h">'Benim Okulum'</span><span class="sy0">;</span>
 <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">ogrenciSayisi</span> <span class="sy0">=</span> <span class="nu0">75</span><span class="sy0">;</span>
 <span class="br0">&#125;</span>
<span class="co2">#ogrenciSayisi değişkenine dışarıdan erişebilecek public foksiyonu oluşturalım
</span><span class="kw2">public</span> <span class="kw2">function</span> getOgrenciSayisi<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
<span class="kw1">return</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">ogrenciSayisi</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="co2">#ogrenci sayısını dışarıdan müdahale ile değiştirmemize yarayacak fonksiyonu yazalım.
</span><span class="kw2">public</span> <span class="kw2">function</span> ogrenciEkle<span class="br0">&#40;</span><span class="re0">$sayi</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
<span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">ogrenciSayisi</span>  <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">ogrenciSayisi</span> <span class="sy0">+</span> <span class="re0">$sayi</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>şimdi kullanııma tekrar bakalım.</p>
<p>$okul değişkenimize Okul nesnesini oluşturmuştuk.</p>
<div id="wpshdo_10" class="wp-synhighlighter-outer"><div id="wpshdt_10" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_10"></a><a id="wpshat_10" class="wp-synhighlighter-title" href="#codesyntax_10"  onClick="javascript:wpsh_toggleBlock(10)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_10" onClick="javascript:wpsh_code(10)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_10" onClick="javascript:wpsh_print(10)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_10" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span>
<span class="kw1">echo</span> <span class="re0">$okul</span><span class="sy0">-&gt;</span><span class="me1">getOgrenciSayisi</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="co1">//ekrana 75 yazar.</span>
 <span class="re0">$okul</span><span class="sy0">-&gt;</span><span class="me1">ogrenciEkle</span><span class="br0">&#40;</span>10<span class="br0">&#41;</span><span class="sy0">;</span><span class="co1">//eskiden 75 olan öğrenci sayısına 10 daha ekledik.</span>
 <span class="kw1">echo</span> <span class="re0">$okul</span><span class="sy0">-&gt;</span><span class="me1">getOgrenciSayisi</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="co1">//ekrana 85 yazar.</span></pre></div></div>
<p>Neden öğrenci sayısını protected yapıp dışarıdan erişimini engellediğimize gelirsek.<br />
öğrenci sayısını kontrol ederek değiştirmek istiyor olabiliriz. Ya da belirli işlemlerden geçirilerek kullanılması gerekiyor olabilir. Ayrıca direk değişkenlere erişim bir süre sonra bazı durumlarda karışıklığa neden olabiliyor bunun için sistemli bir şekilde fonksiyonlar yazıp sınıf değişkenlerinin değerlerine bu şekilde müdahale etmek isteyebilirsiniz hem bu şekilde farklı yerlerde aynı kontrolü yapmak yerine bu değişkeni kullanmanız gereken her yerde istediğiniz kontrol kendiliğinden yapılacaktır.</p>
<p>Örnek vermek gerekirse okulunuzun kapasitesi 100 olsun. Eğer eklenmek istenen sayı 100&#8242;ü geçerse öğrencileri ekleyemezsiniz. Bunun için kontrol yapmanız gerek.</p>
<div id="wpshdo_11" class="wp-synhighlighter-outer"><div id="wpshdt_11" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_11"></a><a id="wpshat_11" class="wp-synhighlighter-title" href="#codesyntax_11"  onClick="javascript:wpsh_toggleBlock(11)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_11" onClick="javascript:wpsh_code(11)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_11" onClick="javascript:wpsh_print(11)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_11" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span>
<span class="co2">#öğrenci kapasitesini belirten bir değişken hazırlayalım
</span> protected <span class="re0">$ogrenciKapasitesi</span> <span class="sy0">=</span> <span class="nu0">100</span><span class="sy0">;</span>
&nbsp;
<span class="co2">#şimdi de ogrenciEkle fonksiyonunda kapasite kontrolü yapalım
</span> <span class="kw2">public</span> <span class="kw2">function</span> ogrenciEkle<span class="br0">&#40;</span><span class="re0">$sayi</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="kw1">if</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">ogrenciSayisi</span><span class="sy0">+</span><span class="re0">$sayi</span><span class="br0">&#41;</span> <span class="sy0">&lt;=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">ogrenciKapasitesi</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">ogrenciSayisi</span>  <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">ogrenciSayisi</span> <span class="sy0">+</span> <span class="re0">$sayi</span><span class="sy0">;</span>
 <span class="kw1">return</span> <span class="kw4">true</span><span class="sy0">;</span>
 <span class="br0">&#125;</span>
 <span class="kw1">return</span> <span class="kw4">false</span><span class="sy0">;</span>
 <span class="br0">&#125;</span></pre></div></div>
<p>okul kapasitesini (okulKapasitesi) 100 olarak belirttik ve her öğrenci eklenmeye çalıştığında mevcut öğrenci sayısı (ogrenciSayisi) ile eklenmek istenen öğrenci sayısı ($sayi) toplamının okulKapasitesi değişkenini aşıp aşmayacağı kontolünü yapıyoruz. Eğer okul kapasitesini aşacaksa eklemiyor ve bir problem olduğunu belli eden false dönüyor aksi halde true dönüyor ki bu da öğrencinin eklendiğini belirtiyor.</p>
<p>Kullanım şekline gelirsek;</p>
<p>en son 85 öğrencimiz vardı</p>
<div id="wpshdo_12" class="wp-synhighlighter-outer"><div id="wpshdt_12" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_12"></a><a id="wpshat_12" class="wp-synhighlighter-title" href="#codesyntax_12"  onClick="javascript:wpsh_toggleBlock(12)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_12" onClick="javascript:wpsh_code(12)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_12" onClick="javascript:wpsh_print(12)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_12" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span>
<span class="kw1">echo</span> <span class="re0">$okul</span><span class="sy0">-&gt;</span><span class="me1">getOgrenciSayisi</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="co1">//ekrana 85 yazar.</span>
 <span class="co2">#öğrenci eklemeye çalışalım. bu sefer fonksiyonun değer döndürmesini sağladık. o yüzden olumlu mu yoksa olumsuz mu olduğunu da kontrol edeceğiz.
</span>
<span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$okul</span><span class="sy0">-&gt;</span><span class="me1">ogrenciEkle</span><span class="br0">&#40;</span><span class="nu0">20</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="co1">// true ya da false dönecek</span>
 <span class="kw1">echo</span> <span class="st_h">'Öğrenciler başarıyla eklendi.
 }else{
 echo '</span>Öğrenciler eklenemedi<span class="sy0">.</span> Okul kapasitemizi aştınız<span class="sy0">.</span><span class="st_h">';
 }</span></pre></div></div>
<p>bir de sınıflar için nesne ekleyelim.</p>
<div id="wpshdo_13" class="wp-synhighlighter-outer"><div id="wpshdt_13" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_13"></a><a id="wpshat_13" class="wp-synhighlighter-title" href="#codesyntax_13"  onClick="javascript:wpsh_toggleBlock(13)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_13" onClick="javascript:wpsh_code(13)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_13" onClick="javascript:wpsh_print(13)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_13" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span>
<span class="kw2">class</span> Siniflar <span class="kw2">extends</span> Okul<span class="br0">&#123;</span>
 <span class="kw2">private</span> sinifAdi <span class="sy0">=</span> <span class="st_h">'1-A'</span><span class="sy0">;</span>
 <span class="br0">&#125;</span></pre></div></div>
<p>Burada kullandığımız &#8220;extends&#8221; sınıfı genişletmeye yarıyor. Bu şekilde Siniflar sınıfı hem Siniflar sınıfının kendisindeki hem de Okul sınıfındaki elemanlara erişebilir. Buradaki tek istisna Okul sınıfındaki private değişken olan okulAdi. Önceden de söylediğim gibi private değişkenler sadece aynı sınıf içinde kullanılabilir. Burada Siniflar sınıfı ile okuldaki sınıfların bilgilerini tutacağız ve okul ismine direk bir müdahalede bulunmamız sakıncalı diye düşünüp sadece Okul sınıfı içinden değişiklik yapmaya izin verdik.<br />
Şimdi Siniflar sınıfından bir nesne oluşturalım;</p>
<div id="wpshdo_14" class="wp-synhighlighter-outer"><div id="wpshdt_14" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_14"></a><a id="wpshat_14" class="wp-synhighlighter-title" href="#codesyntax_14"  onClick="javascript:wpsh_toggleBlock(14)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_14" onClick="javascript:wpsh_code(14)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_14" onClick="javascript:wpsh_print(14)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_14" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span> <span class="re0">$siniflar</span> <span class="sy0">=</span> <span class="kw2">new</span> Siniflar<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>
<p>$siniflar kullanarak az önce $okul değişkeninde yaptığımız herşeyi yapabiliriz çünkü Okul, extends kullanılarak Siniflar nesnesine bağlı.<br />
Umarım örneğim fazla kafa karıştırıcı olmamıştır.<br />
Ayrıca protected, private ve public tipleri haricinde kullanım şekline göre &#8220;static&#8221; eklentisi var.<br />
static&#8217;teki olay nesne oluşturmaya ihtiyaç kalmamasıdır.</p>
<div id="wpshdo_15" class="wp-synhighlighter-outer"><div id="wpshdt_15" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_15"></a><a id="wpshat_15" class="wp-synhighlighter-title" href="#codesyntax_15"  onClick="javascript:wpsh_toggleBlock(15)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_15" onClick="javascript:wpsh_code(15)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_15" onClick="javascript:wpsh_print(15)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_15" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw2">&lt;?php</span>
<span class="kw2">class</span> Oda<span class="br0">&#123;</span>
 protected static <span class="re0">$masaSayisi</span> <span class="sy0">=</span> <span class="nu0">10</span><span class="sy0">;</span>
&nbsp;
<span class="kw2">public</span> static <span class="kw2">function</span> getMasaSayisi<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
 <span class="kw1">return</span> <span class="kw2">self</span><span class="sy0">::</span><span class="re0">$masaSatisi</span><span class="sy0">;</span>
 <span class="br0">&#125;</span>
 <span class="br0">&#125;</span></pre></div></div>
<p>bu şekilde bir Oda sınıfı olduğunu düşünürsek masa sayısını ekrana yazdırmak için aşağıdaki kodu kullanırız.<br />
<div id="wpshdo_16" class="wp-synhighlighter-outer"><div id="wpshdt_16" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_16"></a><a id="wpshat_16" class="wp-synhighlighter-title" href="#codesyntax_16"  onClick="javascript:wpsh_toggleBlock(16)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_16" onClick="javascript:wpsh_code(16)" title="Show code only"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_16" onClick="javascript:wpsh_print(16)" title="Print code"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://muratonat.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://muratonat.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_16" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw1">echo</span> Oda<span class="sy0">::</span><span class="me2">getMasaSayisi</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// ekrana 10 yazdırır.</span></pre></div></div></p>
<p>Buradaki en büyük fark Oda sınıfından bir nesne oluşturabiliriz fakat -&gt; kullanarak yukarıda tanımladığımız elemanlara erişemeyiz. Erişememizin nedeni static olarak tanımlanmaları. Fonksiyonu herhangi bir nesne oluşturmadan çağırdığıma ve sınıf isminden sonra kullanılan :: işaretine dikkatinizi çekmek isterim. static elemanlar bu şekilde direk kullanılabilir. Aynı zamanda postun en başında sınıf içi elemanlara erişimde genellikle $this kullanılır demiştim. Bunun istisnası da yine static elemanlar. Fonksiyonun içine dikkat ederseniz masaSayisi değişkenine erişmek için önce &#8220;self&#8221; ardından yine :: kullandım. Static elemanlarda $this kullanamazsınız. Bu şekilde çağırmanız gerekir. Aslında daha anlatılabilecek çok şey var fakat saatin geç olduğunu farkederek bırakıyorum. Umarım açık bir şekilde anlatabilmişimdir.</p>
]]></content:encoded>
			<wfw:commentRss>http://muratonat.com/php-5-sinif-yapisi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

