<?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>Yusuf KOÇ &#187; class</title>
	<atom:link href="http://www.ysfkc.com/tag/class/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ysfkc.com</link>
	<description>Php Günlüğü</description>
	<lastBuildDate>Fri, 23 Jul 2010 16:39:50 +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 ile classlara giriş. __construct ve __destruct metotları</title>
		<link>http://www.ysfkc.com/php/php-ile-classlara-giris-__construct-ve-__destruct-metotlari.html</link>
		<comments>http://www.ysfkc.com/php/php-ile-classlara-giris-__construct-ve-__destruct-metotlari.html#comments</comments>
		<pubDate>Sat, 10 Oct 2009 16:01:30 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[__construct]]></category>
		<category><![CDATA[__destruct]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=262</guid>
		<description><![CDATA[Php ile classlara girmeden önce class yapısı hakkında biraz bilgi vermek istiyorum. Php5 ile class yapılarında ciddi bir değişiklik söz konusu oldu php4 deki class yapısı bize bir çok şeyi yapmamıza imkan vermiyordu. Örneğin bir signleton yazılım desenine olanak sağlamıyordu veya gizli olması gereken fonksiyon veya değişkenleri gizlemek için genelde diğerlerinden ayrı olsun diye comment [...]]]></description>
			<content:encoded><![CDATA[<p><img width="100" height="50" class="alignleft size-full wp-image-198" title="php" src="http://www.ysfkc.com/wp-content/uploads/php.jpg" alt="php"/> Php ile classlara girmeden önce class yapısı hakkında biraz bilgi vermek istiyorum. Php5 ile class yapılarında ciddi bir değişiklik söz konusu oldu php4 deki class yapısı bize bir çok şeyi yapmamıza imkan vermiyordu. Örneğin bir signleton yazılım desenine olanak sağlamıyordu veya gizli olması gereken fonksiyon veya değişkenleri gizlemek için genelde diğerlerinden ayrı olsun diye comment satırları girer veya önlerine _ koyarak belirtmeye çalışır kullanıcıların yanlış kullanımlarını önlemeye çalışırdık.<br />
<span id="more-262"></span><br />
Php5 den itibaren artık bu tarz comment satırları girmek yerine public, protected, private, static, final, const gibi tanımlar gelmiştir. Bunlar class yazılımında programcılara büyük bir avantaj sağlamaktadır. Örneğin kullanıcının kullanmasını istemediğimiz metot veya değişkenleri private tanımlayarak sadece class içerisinden erişim yapmasını sağlayabiliyoruz ve daha bunun gibi bir çok yeni güzel şeyler var.</p>
<p>Şimdi gelelim classlara. Php ile class yazarken genelde kullanacağımız iki adet sabit metot var diyelim. Sabit dedim başka bir isim bulamadım şuan aklıma gelmiyor. Bu metotlar olmassa olmaz değil ama zamanla çok işimize yarayacak olan __construct ve __destruct metotlarıdır. Construct bir class başlatılırken yapılacak olan işleri yapmakla yükümlü olurken destruct metodu ise tam tersi sınıf sonlandığında yapılması gereken işleri yapmakla yükümlüdür. </p>
<p>Nerelerde kullanacağız sorusuna gelince, Bir sınıf başlatılırken belli başlı bazı ayarlar veya ek işlemler varsa bu metot içine yazılır. Destruct da ise tam tersi örneğin bir class başlarken kullanılan ayarları sıfırlamak için kullanabilirsiniz veya değişkenleri unset etmek için kullanabilirsiniz. </p>
<p>Örnekle devam edelim.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> ilk_sinifim
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Merhaba \'ilk_sinifim\' başlatıldı.'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$ilk_sinifim</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ilk_sinifim<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Yukarıdaki örneğimizi yazıp çalıştırdığımız da ekrana &#8220;Merhaba &#8216;ilk_sinifim&#8217; başlatıldı.&#8221; şeklinde bir yazıyla karşılaşırız. Ne demiştik __construct (kurucu fonksiyon, yapılandırıcı fonksiyon) sınıf başlatılırken yapılması gereken işlemler varsa bu metotda tanımlanır ve sınıf başlatılırken bu metot içeriği otomatik çalışır demiştik. </p>
<p>Aynı zamanda eğer __construct metodunu kullanacaksak kesinlikle public anahtarı ile tanımlanması gerekir aksi halde protected veya private tanımlanırsa hata ile karşılaşırsınız.  İsterseniz __construct metoduna sınıf başlatılırken değişken de gönderebilirsiniz. </p>
<p>Aynı örneği bu sefer de değişken göndererek yapalım.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> ilk_sinifim
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Merhaba {$name}, ben \'ilk_sinifim\' memnun oldum.'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$ilk_sinifim</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ilk_sinifim<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'yusuf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Bu örnekte de sınıf başlatılırken bir $name değişkeni gönderdik. Sınıf başlatıldığında ise &#8220;Merhaba yusuf ben &#8216;ilk_sinifim&#8217; memnun oldum.&#8221; yazısı çıkacaktır. </p>
<p>Destruct metodu ise construct metodunun tam tersidir. Sınıf sona erdiğindeki işlemleri yapar.</p>
<p>Bir örnekle pekiştirelim.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> ilk_sinifim
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$name</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$name</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __destruct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Name değişken içeriği boşaltıldı.'</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$ilk_sinifim</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ilk_sinifim<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'yusuf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Örnekte öncelikle dışardan erişemeyecekleri şekilde bir $name değişkeni tanımladık. Ardından __construct metoduna bir $name değişkeni göndererek sınıf içinde tanımladığımız $name değişkenine eşitledik ve ekrana yazdırdık. Ardından sınıf sonlanacağı vakit ekrana &#8220;Name değişken içeriği boşaltıldı.&#8221; yazısını yazıp sınıf içindeki $name değişkeninin içeriğini boşaltacaktır. </p>
<p>Destruct metoduda construct gibi public ile tanımlanmalıdır. </p>
<p>Soru ve görüşleriniz için yorumlar sizi bekliyor <img src='http://www.ysfkc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/php/php-ile-classlara-giris-__construct-ve-__destruct-metotlari.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Php __autoload fonksiyonu</title>
		<link>http://www.ysfkc.com/php/php-__autoload-fonksiyonu.html</link>
		<comments>http://www.ysfkc.com/php/php-__autoload-fonksiyonu.html#comments</comments>
		<pubDate>Fri, 09 Oct 2009 20:48:34 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[__autoload]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=260</guid>
		<description><![CDATA[Php ile classlara değinmeden önce OOP nedir diye bir açıklama gereği hissetmiyorum . Direk konuya dalmak istiyorum zira herkes bi yerde mutlaka OOP nedir diye okumuşlardır. Okumayanlar içinde buyrun link burada. Sınıflara ilk __autoload fonksiyondan başlayalım. Bu metot sınıflarımızı uygulamamıza otomatik olarak yükleyecektir böylece şu classı yüklemişmiydim yüklememişmiydim derdinden kurtuluyoruz. Metotu bir örnekle açıklayıp bitirelim. [...]]]></description>
			<content:encoded><![CDATA[<p><img width="100" height="50" alt="php" src="http://www.ysfkc.com/wp-content/uploads/php.jpg" title="php" class="alignleft size-full wp-image-198"/>Php ile classlara değinmeden önce OOP nedir diye bir açıklama gereği hissetmiyorum <img src='http://www.ysfkc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Direk konuya dalmak istiyorum zira herkes bi yerde mutlaka OOP nedir diye okumuşlardır. Okumayanlar içinde buyrun link <a href="http://tr.wikipedia.org/wiki/Nesne_Y%C3%B6nelimli_Programlama" target="_blank">burada</a>.<br />
<span id="more-260"></span><br />
Sınıflara ilk __autoload fonksiyondan başlayalım. Bu metot sınıflarımızı uygulamamıza otomatik olarak yükleyecektir böylece şu classı yüklemişmiydim yüklememişmiydim derdinden kurtuluyoruz. </p>
<p>Metotu bir örnekle açıklayıp bitirelim. Öncelikle aşağıdaki bir dizin içinde index.php ve bir de class adında dizin yaratalım ve class içerisine de a.class.php ve b.class.php diye iki adet php dosyası yaratalım. </p>
<p><a href="http://www.ysfkc.com/wp-content/uploads/autoload_1.jpg"><img class="aligncenter size-full wp-image-259" title="autoload_1" src="http://www.ysfkc.com/wp-content/uploads/autoload_1.jpg" alt="autoload_1" width="594" height="60" /></a></p>
<p>Burdaki önemli nokta class dosyalarımıza gelişi güzel bir isim değilde bir düzen içerisinde isim vermektir. Çünkü fonksiyon belli bir düzeneğe göre eklemee yapacaktır. örneğin a.class.php dosyasını yüklerken class.b.php dosyasını yüklemeyecektir az sonra yazacağımız fonksiyon da bu düzeni siz kendinize göre oluşturabilirsiniz.</p>
<p>Evet dosyalarımızı oluşturduğumuza göre autoload fonksiyonumuzu yazalım.</p>
<p>autoload.php:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">function</span> __autoload<span style="color: #009900;">&#40;</span><span style="color: #000088;">$classname</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$include</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;class/<span style="color: #006699; font-weight: bold;">{$classname}</span>.class.php&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$include</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$include</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$classname</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' sınıfı yüklenemedi.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Yukarıdaki autoload fonksiyonunu sayfamızın üstüne include ediyoruz. Daha sonra ise class dizinindeki herhangi bir sınıfı başlatmak istediğimiz de autoload devreye girerek sınıfı yüklüyor. Eğer hiç bir sınıf başlatmassanız sayfada hiç bir sınıfı dahil etmemiş olursunuz.</p>
<p>class/a.class.php:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> a
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Merhaba ben a sınıfıyım'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>class/b.class.php:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> b
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Merhaba ben b sınıfıyım'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Yukarıda autoload fonksiyonu ile yüklenmesini istediğimiz sınıfları yazdık ve class dizinine sınıfadi.class.php şeklinde kaydettik. </p>
<p>Şimdide en son olarak index.php mizi yazalım ve örneğimizin çalışır halini görelim.</p>
<p>index.php:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #666666; font-style: italic;"># Sayfa tipini ve karakter setini belirtelim.
</span><span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Content-Type: text/html; charset=utf-8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Autoload fonksiyonumuzu dahil edelim.
</span><span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'autoload.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> a<span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;br&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$b</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> b<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Görüldüğü üzere __autoload fonksiyonu biz tek tek belirtmemize gerek kalmadan tüm sınıfları sayfamıza dahil etti. Burdan şu anlaşılmasın içinde 100 tane dosya varsa hepsini dahil etmiyor sayfanızda hangi sınıfı başlatıyorsanız o sınıfı dahil ediyor sadece.</p>
<p>Yazıyı noktalarken soru ve merak ettikleriniz için yorumları kullanabilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/php/php-__autoload-fonksiyonu.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
