<?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>CETURK &#187; PHP</title>
	<atom:link href="http://www.ceturk.com/kategori/web-teknolojileri/php/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ceturk.com</link>
	<description>Türkiye&#039;nin Bilişim Platformu</description>
	<lastBuildDate>Wed, 08 Sep 2010 08:53:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Formdan Parametre Okuyup Ekrana Bastırmak</title>
		<link>http://www.ceturk.com/web-teknolojileri/formdan-parametre-okuyup-ekrana-bastirmak.html</link>
		<comments>http://www.ceturk.com/web-teknolojileri/formdan-parametre-okuyup-ekrana-bastirmak.html#comments</comments>
		<pubDate>Tue, 15 Dec 2009 19:46:43 +0000</pubDate>
		<dc:creator>Yönetici</dc:creator>
				<category><![CDATA[Download]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Teknolojileri]]></category>
		<category><![CDATA[Örnek Kodlar]]></category>
		<category><![CDATA[ekran yazdırma]]></category>
		<category><![CDATA[Formdan okuma]]></category>
		<category><![CDATA[parametre]]></category>
		<category><![CDATA[PHP örnek]]></category>
		<category><![CDATA[programmer7]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=4879</guid>
		<description><![CDATA[Formun oldugu bir html dosyasi ve php dosyasindan olusmaktadir.Ornek formdan aldigi bilgiyi php dosyasi ile okuyup ekrana bastirmaktadir.
Ekleyen Üyemiz :       programmer7
]]></description>
			<content:encoded><![CDATA[<p>Formun oldugu bir html dosyasi ve php dosyasindan olusmaktadir.Ornek formdan aldigi bilgiyi php dosyasi ile okuyup ekrana bastirmaktadir.</p>
<p>Ekleyen Üyemiz :       <strong>programmer7</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/web-teknolojileri/formdan-parametre-okuyup-ekrana-bastirmak.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP ile mail gönderin! (Webmail)</title>
		<link>http://www.ceturk.com/web-teknolojileri/php/php-ile-mail-gonderin-webmail.html</link>
		<comments>http://www.ceturk.com/web-teknolojileri/php/php-ile-mail-gonderin-webmail.html#comments</comments>
		<pubDate>Fri, 11 Dec 2009 00:15:55 +0000</pubDate>
		<dc:creator>Yönetici</dc:creator>
				<category><![CDATA[Download]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Örnek Kodlar]]></category>
		<category><![CDATA[chelique]]></category>
		<category><![CDATA[ePosta Göndermek]]></category>
		<category><![CDATA[Mail Gönderme]]></category>
		<category><![CDATA[PHP örnek]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=4837</guid>
		<description><![CDATA[PHP ile mail göndermenize yarayan çok basit bir script. HTML ile oynayarak kendi sitenize uyarlayabilirsiniz. Bilgisayar Müh. olmadığım için kodda saçmalıklar olabilir. Şimdiden özür diler, yorumlarınızı beklerim.
Ekleyen Üyeemiz :  chelique






]]></description>
			<content:encoded><![CDATA[<p>PHP ile mail göndermenize yarayan çok basit bir script. HTML ile oynayarak kendi sitenize uyarlayabilirsiniz. Bilgisayar Müh. olmadığım için kodda saçmalıklar olabilir. Şimdiden özür diler, yorumlarınızı beklerim.</p>
<p>Ekleyen Üyeemiz :  <strong><span>chelique</span></strong></p>
<p><strong><br />
</strong></p>
<p><strong><br />
</strong></p>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/web-teknolojileri/php/php-ile-mail-gonderin-webmail.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP ile MySql Database Üzerinde Delete ve Edit İşlemi</title>
		<link>http://www.ceturk.com/web-teknolojileri/php-ile-mysql-database-uzerinde-delete-ve-edit-islemi.html</link>
		<comments>http://www.ceturk.com/web-teknolojileri/php-ile-mysql-database-uzerinde-delete-ve-edit-islemi.html#comments</comments>
		<pubDate>Mon, 09 Nov 2009 14:24:33 +0000</pubDate>
		<dc:creator>Yönetici</dc:creator>
				<category><![CDATA[Download]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Teknolojileri]]></category>
		<category><![CDATA[Örnek Kodlar]]></category>
		<category><![CDATA[frontier]]></category>
		<category><![CDATA[MySQL örnek]]></category>
		<category><![CDATA[PHP örnek]]></category>
		<category><![CDATA[Veritabanı İşlemleri]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=4276</guid>
		<description><![CDATA[MySql de ogrenciler isimli bir database ve Id, Adı, Soyadı ve No isimli 4 field içeren, bilgisayar isimli bir tablo oluşturduktan sonra page1.php dosyasını örneğini kullanabilirsiniz&#8230;
Ekleyen Üyemiz :  frontier 
]]></description>
			<content:encoded><![CDATA[<p>MySql de ogrenciler isimli bir database ve Id, Adı, Soyadı ve No isimli 4 field içeren, bilgisayar isimli bir tablo oluşturduktan sonra page1.php dosyasını örneğini kullanabilirsiniz&#8230;</p>
<p>Ekleyen Üyemiz :  <strong>frontier </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/web-teknolojileri/php-ile-mysql-database-uzerinde-delete-ve-edit-islemi.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RegExp ile HTML Kodu Renklendirmek</title>
		<link>http://www.ceturk.com/programlama/regexp-ile-html-kodu-renklendirmek.html</link>
		<comments>http://www.ceturk.com/programlama/regexp-ile-html-kodu-renklendirmek.html#comments</comments>
		<pubDate>Fri, 06 Nov 2009 22:54:52 +0000</pubDate>
		<dc:creator>Yönetici</dc:creator>
				<category><![CDATA[Download]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Web Teknolojileri]]></category>
		<category><![CDATA[Örnek Kodlar]]></category>
		<category><![CDATA[HTML Kodu Renklendirmek]]></category>
		<category><![CDATA[j-joey]]></category>
		<category><![CDATA[PHP örnek]]></category>
		<category><![CDATA[RegExp]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=4050</guid>
		<description><![CDATA[İlk RegExp denemem   HTML Kodunu özel bir RegExp patterni ile parçalayıp tagları renklendiren bir script. Hani bilirsiniz HomeSite, Dreamweaver veya benzeri programlar sizin kodları okumanızı kolaylaştırmak için tagları renklendirir ya, bu dostumuz da onu yapıyor.
Kodların içinde açıklama satırları da var. Herhangi bir soru(nu)nuz olursa buralardayım&#8230;
Dostumuzun bir de bugı var. Eğer açılıp kapanan taglar [...]]]></description>
			<content:encoded><![CDATA[<p>İlk RegExp denemem <img src='http://www.ceturk.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  HTML Kodunu özel bir RegExp patterni ile parçalayıp tagları renklendiren bir script. Hani bilirsiniz HomeSite, Dreamweaver veya benzeri programlar sizin kodları okumanızı kolaylaştırmak için tagları renklendirir ya, bu dostumuz da onu yapıyor.</p>
<p>Kodların içinde açıklama satırları da var. Herhangi bir soru(nu)nuz olursa buralardayım&#8230;</p>
<p>Dostumuzun bir de bugı var. Eğer açılıp kapanan taglar (mesela <a></a>) arasında satır sonu karakteri varsa, bunu açılıp kapanan tag değilde yalnız tag olarak algılıyor. Oysa öyle yapmaması lazım. İşte RegExp deli ediyor adamı&#8230;</p>
<p>Ekleyen Üyemiz :  <strong>j-joey</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/programlama/regexp-ile-html-kodu-renklendirmek.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nesne Yönelimli PHP – Bölüm 3</title>
		<link>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-%e2%80%93-bolum-3.html</link>
		<comments>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-%e2%80%93-bolum-3.html#comments</comments>
		<pubDate>Fri, 06 Nov 2009 12:22:56 +0000</pubDate>
		<dc:creator>Kurtman Çelik</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Teknolojileri]]></category>
		<category><![CDATA[Kurtman Çelik]]></category>
		<category><![CDATA[Nesne Tabanlı]]></category>
		<category><![CDATA[Nesne Yönelimli]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=3901</guid>
		<description><![CDATA[
Öncelikle
Tekrar merhaba, Nesne Yönelimli PHP dizisinin, son bölümüne hoşgeldiniz. Daha öncede bahsettiğim gibi eğer kendinizi bu konuda hazır hissetmiyorsanız, bölüm 1 ve bölüm 2 yazılarını tekrar etmenizi ısrarla tavsiye ediyorum. Temeller, bu konudaki en önemli parça.
Bu Yazıda
Bu yazıda, sürekli bahsettiğimiz MySQLi Veritabanı Sınıfını inşa edeceğiz ve bunu yaparken daha önceki konulardan öğrendiğimiz herşeyi kullanmaya çalışacağız.

Değişkenler [...]]]></description>
			<content:encoded><![CDATA[<p><img title="oop-php-part3-banner.jpg" src="http://www.ceturk.com/images/oop-php-part3-banner.jpg.png" alt="oop-php-part3-banner.jpg" width="600" height="160" /></p>
<h2>Öncelikle</h2>
<p>Tekrar merhaba, Nesne Yönelimli PHP dizisinin, son bölümüne hoşgeldiniz. Daha öncede bahsettiğim gibi eğer kendinizi bu konuda hazır hissetmiyorsanız, <a href="http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-1.html" target="_blank">bölüm 1</a> ve<a href="http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-2.html" target="_blank"> bölüm 2</a> yazılarını tekrar etmenizi ısrarla tavsiye ediyorum. Temeller, bu konudaki en önemli parça.<span id="more-3901"></span></p>
<h2>Bu Yazıda</h2>
<p>Bu yazıda, sürekli bahsettiğimiz MySQLi Veritabanı Sınıfını inşa edeceğiz ve bunu yaparken daha önceki konulardan öğrendiğimiz herşeyi kullanmaya çalışacağız.</p>
<ol>
<li>Değişkenler ve Yapıcı Metod,</li>
<li>Temel Fonksiyonlar.</li>
</ol>
<p>Başlıklarıyla ilglileneceğiz.</p>
<h2>1. Değişkenler ve Yapıcı Metod</h2>
<p><em>class.db.php</em> adında yeni bir dosya oluşturun ve içine aşağıdaki kod bloğunu girin:<br />
Açıklama satırlarını okumadan önce kodlara bakarak ne yapıldığını çözmeye çalışabilirsiniz.</p>
<pre class="brush:php">&lt;?php

/*
* class db
* @param Host
* @param User
* @param Password
* @param Name
*/
class db
{

var $host;       //MySQL Host
var $user;       //MySQL User
var $pass;       //MySQL Password
var $name;       //MySQL Name

var $mysqli;     //MySQLi Object

var $last_query; //Last Query Run

/*
* Class Constructor
* Creates a new MySQLi Object
*/
function __construct($host, $user, $pass, $name)
{

$host = $this-&gt;host;
$user = $this-&gt;user;
$pass = $this-&gt;pass;
$name = $this-&gt;name;

$this-&gt;mysqli = new mysqli($this-&gt;host, $this-&gt;user, $this-&gt;pass, $this-&gt;name);

}

}

$db = new db('localhost', 'root', '', 'blog');

?&gt;</pre>
<p>Öncelikle, Nesne Yönelimli PHP&#8217;nin en önemli meselelerinden birini tamamlamış bulunıyoruz: Organiazyon!. İlk önce, bir veritabanına bağlanmak için gereken tüm bilgileri birer değişken olarak tanımladık ve ardından yapıcı (constructor) metod yardımı ile kullanıcıdan bu bilgileri girmesini istedik. Veritabanı bilgilerini yapıcı metod ile almamızın sebebi; biz daha sonradan bu sınıfı kullanmaya başladığımız sırada veritabanı bilgilerinin girilmesine gerek kalmamasının sağlanmasıdır. Böylelikle kullanıcı, bizim sınıfımızı ilk çağırdığında bir kereye mahsus, veritabanı bilgilerini girecek ve daha sonraki kullanımlarda bu bilgilere ihtiyaç duymayacaktır.</p>
<p>En son satırda ise bu sınıfımızın bir nesnesini tanımlayarak, örnek veritabanı bilgileri giriyoruz.</p>
<h2>2. Temel Fonksiyonlar</h2>
<h3>Select</h3>
<p>Şimdi, yukarıdaki kod bloğu sayesinde veritabanı bağlantısını kurmuş olduk, sıra geldi; gönderdiğimiz &#8220;SELECT&#8221; sorgu cümlesini veritabanı üzerinde çalıştıran fonksiyonun yazımına.</p>
<p>Aşağıdaki kod bloğunu sınıfımızın sonuna ekleyin:</p>
<pre class="brush:php">/*
* Function Select
* @param fields
* @param from
* @param where
* @returns Query Result Set
*/
function select($fields, $from, $where)
{

$query = "SELECT " . $fields . " FROM `" . $from . "` WHERE " . $where;
$result = $this-&gt;mysqli-&gt;query($query);

$this-&gt;last_query = $query;

return $result;

}</pre>
<p>Böylelikle, bir MySQL tablosu üzerinde gönderdiğimiz sorguyu çalıştırıp, sonuçları bize geri getiren bir fonksiyon yazmış olduk.</p>
<p>Kullandığımız değişkenler; <em>$fields</em> &gt;alanlar, yani tablodan hangi alanların okunup geri döndürüleceği, <em>$from </em>&gt; tablo adı, yani sorgu cümlesinin hangi tablo üzerinde çalıştırılacağı, <em>$where</em> &gt; nereden, yani tablodan okunacak bilgilerin hangi kritere göre<em> filtreleneceği</em>.</p>
<p>Son olarak, sorgu çalıştırılır ve geri dönen değerler <em>$result</em> adındaki değişkende tutulur ve<em> return</em> komutu ile uygulamamıza geri gönderilir.</p>
<h3>Insert</h3>
<p>Veritabanına yeni veri kaydı göndermek istediğimizde kullanacağımız fonksiyonumuzu yazalım:</p>
<pre class="brush:php">/*
* Function Insert
* @param into
* @param values
* @returns boolean
*/
function insert($into, $values)
{

$query = "INSERT INTO " . $into . " VALUES(" . $values . ")";

$this-&gt;last_query = $query;

if($this-&gt;mysqli-&gt;query($query))
{
return true;
} else {
return false;
}

}</pre>
<p>En basit fonksiyonlardan bir tanesi. Kullanıcıdan sadece 2 değişken almamız yeterli; Tablo adı ve eklenecek değerler. Bu fonskyionda diğerine göre; geriye tablo kayıtları döndürmek yerine şöyle bir yol izledik: Sorguyu çalıştır, eğer kayıt ekleme başarılı olursa geriye <em>true</em> değeri döndür, eğer kayıt eklemede sorun çıkarsa geriye <em>false</em> değeri döndür.</p>
<h3>Delete</h3>
<p>En basit haliyle veritabanından kayıt giren fonksiyonumuz:</p>
<pre class="brush:php">&lt;?php

/*
* Function Delete
* @param from //Silinecek kayıdın hangi tablodan silineceği.
* @param where //Silme filtresi, hangi koşul uyuyorsa ona göre silme yap.
* @returns boolean //Eğer silme işlemi düzgün tamamlanmışsa geriye true döndür, hata oluşmuşsa geriye false döndür.
*/
function delete($from, $where)
{

$query = "DELETE FROM " . $from . " WHERE " . $where;

$this-&gt;last_query = $query;

if($this-&gt;mysqli-&gt;query($query))
{
return true;
} else {
return false;
}

}

?&gt;</pre>
<h2>Birkaç öneri</h2>
<p>Muhtemelen yazdığımız her fonksiyondaki $last_query (son sorgu) değişkenini, dikkatinizde kaçmamışdır. Sınıfımızın en başında tnımladığmız bu değişken, sınıfımız aracılığı ile çalıştırılmış en son sorguyu hafızada tutmak için kullanılıyor. Nedeni ise: son derece hayati önem kazanan sorguların, hata ayıklama işlemlerinin yapılmasına yardımcı olmasıdır. Bir hata meydana geldiğinde aynı sorguyu tekrar çalıştırmakdansa bu değişkene bakarak hatayı bulmaya çalışabilirsiniz. Diğer bir değişken ise $last_error (son hata), yazmış olduğumuz fonksiyonlardaki hata olma olasılıklarına karşı, kullanıcıyı bilgilendirmek amacıyla kullanılabilir. Bir hata meydana geldiğinde, hata mesajını bu değişkene aktarıp return komutu ile kullanıcıyı haberdar edebilirsiniz.</p>
<p>Update sorgusunu ise size bırakıyorum, ne kadar öğrendiğinizi ispatlamak adına update fonksiyonunu siz kendiniz yazmaya çalışabilirsiniz.</p>
<h2>Sonuç</h2>
<p>Bu yazıyla birlikte, Nesne Yönelimli PHP&#8221;de giriş seviyesinde bilgi birikimine sahip olmuş olduk. Umarım öğrendiğimiz bu temel bilgiler üzerine kendinizi daha çok geliştirir ve ileri konular hakkındada bilgi sahibi olursunuz. Takip ettiğiniz için teşekkürler, iyi çalışmalar.</p>
<p>Kurtman Çelik<br />
<a href="http://kurtmancelik.wordpress.com/" target="_blank">kurtmancelik.wordpress.com</a><br />
<strong>Kaynak: <a href="http://buildinternet.com/2009/07/an-introduction-to-object-oriented-php-part-3/" target="_blank">http://buildinternet.com/2009/07/an-introduction-to-object-oriented-php-part-3/</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-%e2%80%93-bolum-3.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nesne Yönelimli PHP &#8211; Bölüm 2</title>
		<link>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-2.html</link>
		<comments>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-2.html#comments</comments>
		<pubDate>Thu, 05 Nov 2009 12:40:44 +0000</pubDate>
		<dc:creator>Kurtman Çelik</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Teknolojileri]]></category>
		<category><![CDATA[Kurtman Çelik]]></category>
		<category><![CDATA[Nesne Tabanlı]]></category>
		<category><![CDATA[Nesne Yönelimli]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=3825</guid>
		<description><![CDATA[
Giriş
Bundan önceki yazımızda nesne yönelimli PHP&#8217;ye giriş yapmıştık. Bu yazımızda ise önceki yazıdaki örnekler üzerinden; ilerlemeye devam ediyoruz. Eğer başlangıç seviyesinde bilgiye sahip değilseniz, öncelikle 1. yazıyı okumanızı tavsiye ediyorum.

Bu Yazıda

Yapıcı (Constructors) ve Yıkıcı (Destrucktors) Metodlar,
Fonksiyonlardan değer döndürme,
Düzeni sağlama.

Konularını işliyoruz.
1. Yapıcı ve Yıkıcı Metodlar
Yapıcılılara, bir binanın yapımına başlanılması eylemi olarak bakabiliriz; yani bir sınıfın kullanıma [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-3826" title="oop-php-part2-banner" src="http://www.ceturk.com/images/oop-php-part2-banner.jpg" alt="oop-php-part2-banner" width="600" height="160" /></p>
<h2>Giriş</h2>
<p><a href="http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-1.html" target="_blank">Bundan önceki yazımızda</a> nesne yönelimli PHP&#8217;ye giriş yapmıştık. Bu yazımızda ise önceki yazıdaki örnekler üzerinden; ilerlemeye devam ediyoruz. Eğer başlangıç seviyesinde bilgiye sahip değilseniz, öncelikle 1. yazıyı okumanızı tavsiye ediyorum.</p>
<p><span id="more-3825"></span></p>
<h2>Bu Yazıda</h2>
<ol>
<li>Yapıcı (Constructors) ve Yıkıcı (Destrucktors) Metodlar,</li>
<li>Fonksiyonlardan değer döndürme,</li>
<li>Düzeni sağlama.</li>
</ol>
<p>Konularını işliyoruz.</p>
<h2>1. Yapıcı ve Yıkıcı Metodlar</h2>
<p>Yapıcılılara, bir binanın yapımına başlanılması eylemi olarak bakabiliriz; yani bir sınıfın kullanıma hazır olması için gereken işlemler olarak tanımlanabilir. Yıkıcılar ise binanın yani sınıfın yok edilmesi olarak tanımlanabilir.</p>
<p>Daha iyi anlaşılması için yapıcılara bir örnek verelim:</p>
<pre class="brush:php">&lt;?php
class MyClass
{
function __construct()
{
echo "MyClass Loaded!";
}
}
$MyClass = new MyClass();
?&gt;</pre>
<p>Bu örnekde; basitçe bir sınıf tanımladık ve içinde yapıcı bir metod yerleştirdik. Kodumuzda bu sınıfımızı çağırdığımız zaman hiç bir işlem yapmasak bile yapıcı metod çalışacak ve ekrana &#8220;Sınıf kullanıma hazır&#8221; mesajını yazıcaktır.<br />
Yıkıcı metodlara gelecek olursak; PHP&#8217;de sınıflarımızın her zaman bir yıkıcı metoda ihtiyacı yoktur. Zira siz bir nesne ile birkaç işlem yapıp o nesneyi yok ettiğinizde içindeki fonksiyon ve değişkenlerde yok olacaktır.</p>
<h2>2. Fonksiyonlardan değer döndürme</h2>
<p>Basit örneklerin dışında, gerçek projelerden bahsedecek olursak fonksiyonlarınızın her zaman ekrana birşey yazdırması gerekmez. Çoğu zaman geriye bir değer döndürülür ve bu değer ana programda istenilen yerde kullanılır.</p>
<p>Fonksiyonlardan geriye bir değer döndürmek için &#8220;<em>return</em>&#8221; anahtar kelimesi kullanılır ve formatı &#8220;<em>return</em> <strong><em>Geri Döndürülecek Değer</em></strong>&#8221; şeklindedir.</p>
<pre class="brush:php">&lt;?php

class Sinifim
{

var $mysqli;

function __construct()
{

$this-&gt;mysqli = new mysqli('localhost', 'root', '', 'blog');

}

function get_latest_posts()
{

//Do some database selection
$query = "SELECT * FROM `yazilar` ORDER BY `id` DESC";
$result = $this-&gt;mysqli-&gt;query($query);

return $result;

}

}

php?&gt;</pre>
<p>Yukarıdaki örnekde; en basitinden bir veritabanı bağlantısı kurduk ve ardından veritabanındaki &#8220;yazilar&#8221; tablosundaki verileri azalan sıra ile çekip, PHP uygulamamıza gönderdik. Bu noktadan itibaren veritabanından gelen bilgileri istediğimiz yerde kullanabiliriz.</p>
<h2>3. Düzeni Sağlama</h2>
<p><img class="alignnone size-full wp-image-3828" title="intro-oop-knex-boxes" src="http://www.ceturk.com/images/intro-oop-knex-boxes.jpg" alt="intro-oop-knex-boxes" width="600" height="250" /></p>
<p>Yukarıdaki resim &#8220;sınıf&#8221; terimine iyi bir örnek. Birbiri ile bağımsız her kutuya bir sınıf olarak bakacak olursak, kutuların içindekilerde o sınıfa ait fonksiyonlar ve değişkenlerdir.</p>
<p>Sınıfların en büyük avantajı, içindekileri kolay okunabilir ve düzenlenebilir şekilde tutmasıdır.<a href="http://core.trac.wordpress.org/browser/trunk/wp-includes/wp-db.php" target="_blank"> Wordpress&#8217;in veritabanı işlemlerini gerçekleştirmek için kullandığı sınıfı</a>na bakacak olursanız demek istediğimi daha iyi anlayacaksınız.</p>
<p>Gördüğünüz gibi her sınıf tanımının, fonksiyonun, değişkenin, yapıcının üst kısmında; ne işe yaradığını anlatan açıklama satırları mevcut. Bu, o sınıfı kullanan diğer programcılar için çok büyük bir avantaj sağlamaktadır.</p>
<p>Şimdi bu yapıyı kendi sınıfımıza da uygulayalım:</p>
<pre class="brush:php">&lt;?php

/*
* @name Sinifim
* @params none
* Bu sınıf, veritabanına bağlantıyı ve yeni kayıt ekleme işlemlerini gerçekleştirir.
*/
class Sinifim
{

/*
* MySQLi Bağlantısı
*/
private $mysqli;

/*
* __Yapıcı
* Yeni bir MySQL bağlantısı kurar.
*/
function __construct()
{

$this-&gt;mysqli = new mysqli('localhost', 'root', '', 'buildinternet');

}

/*
* Veri ekle
* @params Kullanici_Adi, Sifre
* @returns bool
*/
function Veri_ekle($Kullanici_Adi, $Sifre)
{

//Gelen bilgileri veritabanına kaydet.
if(success)
{
return true;
} else {
return false;

}
}
}
php?&gt;</pre>
<p>Gördüğünüz üzere, sınıfımızın ne olduğunu, hangi iş için yazıldığını belirtmiş olduk. Hangi fonksiyonun hangi parametrelere ihtiyaç duyduğunu ve yaptığı işlemden sonra geriye nasıl bir değer döndürdüğünü yazdığımı açıklama satırlarında belirttik.</p>
<p>Bundan sonraki yazımız için gerekli bilgiyi topladığımıza inanıyorum, 3. yazımızda veritabanı işlemleri yapmak için kullanacağımız basit bir sınıf yazacağız.</p>
<p>Kurtman Çelik<br />
<a href="http://kurtmancelik.wordpress.com/" target="_blank">kurtmancelik.wordpress.com</a><br />
<strong>Kaynak: <a href="http://buildinternet.com/2009/07/an-introduction-to-object-oriented-php-part-2/" target="_blank">http://buildinternet.com/2009/07/an-introduction-to-object-oriented-php-part-2/</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-2.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nesne Yönelimli PHP &#8211; Bölüm 1</title>
		<link>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-1.html</link>
		<comments>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-1.html#comments</comments>
		<pubDate>Wed, 04 Nov 2009 16:03:32 +0000</pubDate>
		<dc:creator>Kurtman Çelik</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Teknolojileri]]></category>
		<category><![CDATA[Kurtman Çelik]]></category>
		<category><![CDATA[Nesne Tabanlı]]></category>
		<category><![CDATA[Nesne Yönelimli]]></category>
		<category><![CDATA[oop]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=3769</guid>
		<description><![CDATA[
Makaleler Hakkında
3 Bölümden oluşacak makale dizisinde, Object Oriented (Nesne Yönelimli) PHP&#8217;nin temellerini; kodunuzu yönetmeyi, bileşenleri birbirinden ayrı tutmayı ve gerektiğinde bunlara kolaylıkla erişebilmeyi konu alacağız.
3. makale ile birlikte; genel veritabanı işlemlerini gerçekleştirmek üzere basit bir MySQLi (MySQL Improved) sınıfı yazacağız.
Bu Yazıda

Nesneler(Objects) ve Sınıflar (Classes) nedir?
İlk sınıfımızı yazalım.
Sınıfların kullanımı.
Sınıfların kişiselleştirilmesi (Dinamizm eklenmesi)

1. Nesneler ve Sınıflar
Sınıflar, basitçte; [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-179" title="oop-php-part1-banner" src="http://kurtmancelik.wordpress.com/files/2009/11/oop-php-part1-banner1.png" alt="oop-php-part1-banner" width="600" height="160" /></p>
<h2>Makaleler Hakkında</h2>
<p>3 Bölümden oluşacak makale dizisinde, Object Oriented (Nesne Yönelimli) PHP&#8217;nin temellerini; kodunuzu yönetmeyi, bileşenleri birbirinden ayrı tutmayı ve gerektiğinde bunlara kolaylıkla erişebilmeyi konu alacağız.<span id="more-3769"></span></p>
<p>3. makale ile birlikte; genel veritabanı işlemlerini gerçekleştirmek üzere basit bir MySQLi (MySQL Improved) sınıfı yazacağız.</p>
<h2>Bu Yazıda</h2>
<ol>
<li>Nesneler(Objects) ve Sınıflar (Classes) nedir?</li>
<li>İlk sınıfımızı yazalım.</li>
<li>Sınıfların kullanımı.</li>
<li>Sınıfların kişiselleştirilmesi (Dinamizm eklenmesi)</li>
</ol>
<h2>1. Nesneler ve Sınıflar</h2>
<p>Sınıflar, basitçte; fonksiyonlar deposu olarak tanımlanabilir. Başka türlü beznetmek gerekirse; Masaüstünüzdeki bir klasör sınıf ise o klasörün içindeki dosyalarda fonksiyonlardır.</p>
<p>Bir de klasik bir örnek üzerinden anlatalım:</p>
<p><img class="alignnone size-full wp-image-3771" title="oop-php-part1-dog-example" src="http://www.ceturk.com/images/oop-php-part1-dog-example.png" alt="oop-php-part1-dog-example" width="600" height="160" /></p>
<p>Resimde de gördüğünüz gibi köpek sınıfının, koşmak, yürümek, oyun oynamak, havlamak gibi fonksiyonları mevcut. Bu yapı bir sınıfın en genel tanımıdır.</p>
<p>Şimdi, sınıfın ne olduğunu az çok öğrendik. Peki bu sınıfı kodlarımızda nasıl kullanacağız. İşte bu noktada işin içine Nesneler giriyor. &#8220;Köpek&#8221; adındaki bir sınıfı kullanmak için bir bir değişken tanımlamamız gerekir.</p>
<p>Daha bağlantılı olması için sınıf yazımından itibaren kodumuza başlayalım:</p>
<h2>2. İlk sınıfımızı yazalım.</h2>
<p>İlk kodumuz olduğu için, olabildiğince basit ilerleyelim; Favori kod editörünüzü açın, myClass.php adına boş bir dosya oluşturun ve içine aşağıdaki kod bloğunu yazın:</p>
<pre class="brush:php">&lt;?php
class myClass
{
 function Merhaba()
 {
 echo "Merhaba!";
 }
}
?&gt;</pre>
<p>Eğer bu dosyayı sunucunuzda çalıştırmaya kalkarsanız, ekrana hiçbirşey yazmayacaktır. Çünkü yapmış oldumuz şey sadece bir sınıf tanımlamak, sınıfın içindekileri çalıştırmak adına şu an için birşey yapmadık.</p>
<p>Devamında yine boş bir dosya olışturup <em>myClass.php</em> ile aynı klasörün içine <em>index.php</em> adıyla  kaydedin.</p>
<h2>3. Sınıfların kullanımı.</h2>
<p><em>index.php</em> içinde, <em>myClass.php</em> içindeki sınıfımıza erişmek için, ilk önce sayfamıza <em>myClass.php</em>&#8216;nin referansını eklememiz gerek. Aşağıdaki kodda bunun nasıl yapıldığı gösterilmiştir:</p>
<pre class="brush:php">&lt;?php

 require_once('myClass.php');

 $myClass = new myClass();

 $myClass-&gt;Merhaba();

?&gt;</pre>
<p>Eğer bu sefer index.php&#8217;yi tarayıcınızda çalıştırırsanız ekranda &#8220;Merhaba dünya!&#8221; yazdığnı göreceksiniz. Şimdi yaptığımız çalışmanın üzerinden geçelim. Öncelikle  &#8220;<em>require_once(&#8216;myClass.php&#8217;)</em>&#8221; satırı ile <em>index.php</em> sayfamıza, içinde sınıfımızın bulunduğu <em>myClass.php</em> sayfamızı çağırdık. Bir sonraki satırda bu sınıfımızı bir değişken gibi kullanabilmemiz için gerekli olan <strong>nesne</strong> tanımlamasını yaptık, bu sayede <em>$myClass</em> nesnesi üzerinden sınıfımız içerisindeki &#8220;Merhaba()&#8221;  fonksiyonuna erişebiliyoruz. Son olarak tanımladığımız nesnenin <em>Merhaba()</em> fonksiyonunu çağırdık ve belirlediğimiz metin ekrana yazdırıldı.</p>
<h2>4. Sınıfların kişiselleştirilmesi</h2>
<p>Şimdi, elimizdeki hazır sınıfımızı kişiselleştirmek adına şöyle bir değişiklik yapalım: sitemize kullanıcı adı ve şifresiyle giriş yapmış birine adıyla hitap ederek merhaba diyelim. bunu yapmak için myClass.php&#8217;ye geri dönüp aşağıdaki değişiklikleri yapın:</p>
<pre class="brush:php">&lt;?php
class myClass
{
function Merhaba($kullanici)
{
echo "Hello " . $kullanici . "!";
}
}
?&gt;</pre>
<p>Bütün yaptığımız, ekrana  &#8220;Merhaba dünya&#8221; yazan fonksiyona bir parametre eklemekten ibaret. Bu sayede fonksiyonumuza <em>index.php</em>&#8216;den istediğimiz kullanıcı adını göndererek, o kişiye özel merhaba yazdırabiliriz.<em> index.php</em> sayfasına geri dönün ve aşağıdaki değişiklikleri uygulayın:</p>
<pre class="brush:php">&lt;?php

require_once('myClass.php');

$myClass = new myClass();

$myClass-&gt;Merhaba('Ali');

?&gt;</pre>
<p><em>index.php </em>sayfasını tarayıcınızda açtığınızda ekranda &#8220;Merhaba Ali!&#8221; yazdığını görürsünüz.</p>
<p>Bu çalışma ile de sınıflarımızı nasıl kişiselleştirip, dinamizm katabileceğimizi gördük.</p>
<p>Kurtman Çelik<br />
<a href="http://kurtmancelik.wordpress.com/" target="_blank">kurtmancelik.wordpress.com</a><br />
<strong>Kaynak: <a href="http://buildinternet.com/2009/07/an-introduction-to-object-oriented-php-part-1/" target="_blank">http://buildinternet.com/2009/07/an-introduction-to-object-oriented-php-part-1/</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/web-teknolojileri/nesne-yonelimli-php-bolum-1.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP ORM Faces</title>
		<link>http://www.ceturk.com/web-teknolojileri/php-orm-faces.html</link>
		<comments>http://www.ceturk.com/web-teknolojileri/php-orm-faces.html#comments</comments>
		<pubDate>Thu, 22 Oct 2009 19:39:49 +0000</pubDate>
		<dc:creator>Olcay KÜK</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Teknolojileri]]></category>
		<category><![CDATA[php faces]]></category>
		<category><![CDATA[php orm]]></category>
		<category><![CDATA[php orm faces]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=3208</guid>
		<description><![CDATA[Merhabalar bu yazıda PHP Faces ORM yapısını anlatmaya çalışacağım 
ORM nedir? İlişkisel Nesne Eşleştirme (Object Relation Mapping) basit bir anlatımla veritabanındaki tablolara karşılık gelen sınıflar ve bu sınıfların özelliklerine göre SQL cümleleri üretebilen bir yazılım mimarisidir diyebiliriz.

Tablolarımıza karşılık gelen bu sınıflara genel anlamda Varlık(Entity) sınıfları adını veriyoruz. Nesne yönelimli programlamada her şey birer nesne olarak [...]]]></description>
			<content:encoded><![CDATA[<p>Merhabalar bu yazıda PHP Faces ORM yapısını anlatmaya çalışacağım<strong> </strong></p>
<p><strong>ORM nedir? </strong>İlişkisel Nesne Eşleştirme (Object Relation Mapping) basit bir anlatımla veritabanındaki tablolara karşılık gelen sınıflar ve bu sınıfların özelliklerine göre SQL cümleleri üretebilen bir yazılım mimarisidir diyebiliriz.<span id="more-3208"></span></p>
<p><img class="alignnone size-medium wp-image-3207" title="orm" src="http://www.ceturk.com/images/orm-600x207.jpg" alt="orm" width="600" height="207" /></p>
<p>Tablolarımıza karşılık gelen bu sınıflara genel anlamda <strong>Varlık</strong>(Entity) sınıfları adını veriyoruz. Nesne yönelimli programlamada her şey birer nesne olarak düşünülmeli O halde veri tabanındaki işlemlerimizde nesneler olarak düşünmeliyiz. İşte burada ORM bize veritabanındaki tablolarımızı nesneleştirmemizi ve CRUD(create, read, update, delete) işlemlerimizi bir nevi basitleştirmemizi sağlamakta.</p>
<p>Örnek vermek gerekirse veritabanımızda urun adında bir tablo olduğunu ve urun tablosu için PHP tarafında Urun adında bir varlık sınıfımızın olduğunu varsayalım. Veri tabanındaki urun tablosuna yeni bir urun eklemek için</p>
<p>$urun = new Urun();</p>
<p>$urun-&gt;adi=”CPU”</p>
<p>$urun-&gt;fiyat=”124”;</p>
<p>$urun-&gt;save();</p>
<p><strong>PHP Faces ORM</strong> yapısından faydalana bilmeniz için PHP <strong>PDO</strong> eklentisini aktif durumda olmalı.<br />
PDO eklentisini php.ini dosyasından aktif duruma getirebilirsiniz. windows işletim sistemi için uzantılar. dll şeklinde olacak şekilde ayarlanmalı.</p>
<p>extension = pdo.so<br />
extension = pdo_sqlite.so<br />
extension = sqlite.so<br />
extension = pdo_mysql.so</p>
<p>Ayrıca PHP Faces ORM yı tek başına yani Faces frameworkten bağımsız bir şekilde de kullanabilirsiniz bu makalede yazılanları hem framework dâhilinde hemde sadece orm kullanarak gerçekleştirebilirsiniz.</p>
<p>PHP Faces ORM katmanının frameworkten ayrılmış hali için indirme bağlantısı aşağıda hemen zip dosyalarını çıkarıp çalışmaya başlayabilirsiniz.</p>
<p><a href="http://php-orm-persistence.googlecode.com/files/php-orm.zip">http://php-orm-persistence.googlecode.com/files/php-orm.zip</a></p>
<p><strong> </strong></p>
<p><strong>Varlık sınıfları</strong></p>
<p>Veritabanındaki tablolarınıza karşılık gelen varlık sınıfları Entity sınıfından genişletilir.</p>
<p>Tablonuzu varlık sınıfı ile eşleştirirken <strong>Açıklama Notu</strong> (Annotation) kullanırsınız bu hem kodunuzun okunabilirliğini sağlar hem de XML gibi başka bir dosyadan okumanın maliyetine katlanmaz kısacası XML ile eşlemeden daha verimlidir diyebiliriz.</p>
<p><strong> </strong></p>
<p><strong>Açıklama Notları ile Sınıfları eşleştirmek</strong></p>
<p>PHP de Annotation kavramı henüz yerleşmemesine karşın Reflicaiton ile açıklama notları kullanılabilir.</p>
<p>Annotationlar açıklama satırları arasına <strong>@</strong> et işareti kullanmak sureti ile oluşturulur.</p>
<p>Örneğin PHP Faces ORM da tablonuz ile sınıfınızı eşlemek için sınıf tanımlamasının üzerine @table notu eklenir. <strong>@Table</strong> notunun kullanımı aşağıdaki gibidir.</p>
<pre class="brush:csharp">/**
 *  @Table(name = "urun")
 */
class Urun extends Entity{ }</pre>
<p>Yukarıdaki açıklama satırı ile Urun sınıfını veritabanındaki urun tablosuyla eşleştirmiş olduk.<br />
Veritabanındaki tabloların sütunları ile varlık sınıflarının private üyeleri eşleşebilir sütunlar ile sınıf üyelerinin eşleşmesini sağlamak için sınıf üyesinin tanımlandığı yerin üzerine <strong>@Column</strong> notu eklenerek kullanılır. Örneğin ürün tablosunda<strong> id, fiyat, ad</strong> sütunları bulunduğunu varsayarak.</p>
<pre class="brush:csharp">/**
 *  @Table(name = "urun")
 */
class Urun extends Entity{ 

  @Column(name = "id")
    */
    private $no;

     /**
     @Column(name = "fiyat")
     */
    private $name;

    /**
     @Column(name = "ad")
   */
    private $adi;
}</pre>
<p>Varlık sınıfımıza bulunması gereken iki önemli metot vardır <strong>get</strong> ve <strong>set </strong>metotları. Bu metotların eklenme sebebi ORM Update gibi SQL cümleleri oluştururken hangi bilgilin değiştirildiğini bilmek zorunda olmasıdır. Örneğin sadece adını değiştirdiğimiz bir ürünün id ve fiyat sütunlarının <strong>güncellenmemesi </strong>gerekmektedir. Kısacası ORM Hangi Sınıfların hangi alanlarının update edilmesi gerektiğini anlamalıdır. Gereksiz güncellemelerle sistemi yormamalıdır.</p>
<p>Get ve Set metodları aşağıdaki sınıf içerisindeki gibi kullanılabilir.</p>
<p><strong> </strong></p>
<pre class="brush:csharp">/**

*  @Table(name = "urun")

*/

class Urun extends Entity{

@Column(name = "id")

*/

private $no;

/**

@Column(name = "fiyat")

*/

private $fiyat;

/**

@Column(name = "ad")

*/

private $adi;

public function set($name, $value) {

$this-&gt;$name= $value;

}

public function get($name) {

return $this-&gt;$name;

}

}</pre>
<p><strong> </strong></p>
<p>Birincil anahtar eşleştirmesi  <strong>@Id</strong> notunun eşleşecek olan sınıf üyesinin tanımlandığı yerin üzerine yazılması sureti ile gerçekleştirilir. Urun @Id notu eklenmiş son hali aşağıdaki aşağıda ki gibi olacaktır</p>
<pre class="brush:csharp">/**

*  @Table(name = "urun")

*/

class Urun extends Entity{

@Id

@Column(name = "id")

*/

private $no;

/**

@Column(name = "fiyat")

*/

private $fiyat;

/**

@Column(name = "ad")

*/

private $adi;

public function set($name, $value) {

$this-&gt;$name= $value;

}

public function get($name) {

return $this-&gt;$name;

}

}</pre>
<p>Basitlik olması adına bu örneğimizi PHP Faces framework haricinde uygulama yolunu seçiyorum dilerseniz bu örnekleri bir <strong>controller </strong>içerisinde de uygulayabilirsiniz.</p>
<p><strong><em>Veri tabanı ile bağlantının yapılandırılması </em></strong></p>
<p><a href="http://php-orm-persistence.googlecode.com/files/php-orm.zip">http://php-orm-persistence.googlecode.com/files/php-orm.zip</a> adresinden indirdiğiniz klasör içerisindeki config.php dosyasını düzenlemek üzere bir editor yardımı ile açıyoruz. Ve aşağıdaki satırları kendi veritabanı yapılandırmamıza göre değiştiriyoruz.</p>
<p>define(&#8220;DB_CONNECTION_STRING&#8221;,&#8221;mysql:host=localhost;dbname=veritabaniadi&#8221;);//sunucunuz ve veritabanı adı</p>
<p>define(&#8220;DB_USER&#8221;,&#8221;root&#8221;);//veritabanı kullanıcı adı</p>
<p>define(&#8220;DB_PASS&#8221;,&#8221;abc345&#8243;);//veri tabanı parolası</p>
<p>define(&#8220;DB_CONNECTOR&#8221;,&#8221;PDO&#8221;);//bu satırı değiştirmeyin</p>
<p>require_once &#8220;facespersistence/persistence.php&#8221;;// PHP ORM Persistence kütüphanesi</p>
<p>Şimdi yeni bir php dosyası içerisine index.php olabilir yukarıda oluşturduğumuz Urun varlık sınıfını içeren urun.php ve config.php dosyalarını dahil ediyoruz.</p>
<p>require_once &#8220;config.php&#8221;;</p>
<p>require_once &#8220;urun.php&#8221;;</p>
<p>PHP Faces varlık sınıflarını yönetebilmemiz için <strong>EntityManager</strong> adında bir sınıf sunmakta sorgulama kaydetme, silme gibi tüm işlemlerimizi bu sınıf yardımı ile gerçekleştiriyoruz. EntityManager’ın örneğini elde etmek için static getInstance metodunu kullanabilirsiniz.</p>
<p>Urun tablosuna yeni bir satır eklemek</p>
<p>require_once &#8220;config.php&#8221;;</p>
<p>require_once &#8220;urun.php&#8221;;</p>
<p>$urun = new Urun();</p>
<p>$session = EntityManager::getInstance();</p>
<p>$urun-&gt;adi=”LCD Monitor”;</p>
<p>$urun-&gt;fiyat=”450”;</p>
<p>$session-&gt;save($urun);</p>
<p>EnitityManeger’ın <strong>find </strong>metodu parametre olarak varlık sınıfı adi ve varlık sınıfını tanımlarken <strong>@Id</strong> ile tanımladığımız <strong>birincil anahtar</strong> değerlerini kabul eder. Veritabanında verilen değerle göre sorgulama yapar sorgulama sonucu bir kayıt bulunursa birinci parametre olarak verilen sınıf isminde veritabanındaki verilerle eşleşen bir nesne döndürür.</p>
<p>Örnek</p>
<p>Urun tablosundan bir kayıt seçmek ve seçilen kayıt’ı güncelleştirmek</p>
<p>require_once &#8220;config.php&#8221;;</p>
<p>require_once &#8220;urun.php&#8221;;</p>
<p>$session = EntityManager::getInstance();</p>
<p>$urun = $session-&gt;find(“Urun”,1);</p>
<p>$urun-&gt;fiyat=”399”;</p>
<p>$session-&gt;save($urun);</p>
<p>Hem yeni bir kayıt eklemek hem de var olan bir kayıt’ı güncellemek için <strong>save</strong> metodunun kullanılması sizi şaşırtmasın ORM hangi kayıtın veri tabanından depolandığının bilincindedir.</p>
<p>require_once &#8220;config.php&#8221;;</p>
<p>require_once &#8220;urun.php&#8221;;</p>
<p>$session = EntityManager::getInstance();</p>
<p>$urun = $session-&gt;find(“Urun”,1);</p>
<p>$urun-&gt;fiyat=”399”;</p>
<p>$session-&gt;save($urun);</p>
<p>nın bilincindedir.</p>
<p>EnitityManeger’ın <strong>delete</strong> metodu parametre olarak verilen varlık sınıfıyla eşleşen satırları veritabanından <strong>kaldırır.</strong></p>
<p>require_once &#8220;config.php&#8221;;</p>
<p>require_once &#8220;urun.php&#8221;;</p>
<p>$session = EntityManager::getInstance();</p>
<p>$urun = $session-&gt;find(“Urun”,1);</p>
<p>$session-&gt;delete($urun);</p>
<p><strong><em>Faces Orm da Varlık sınıfları arasında ilişkiler</em></strong></p>
<p>Varlık sınıfları arasındaki ilişkiler veritabanını tasarlarken yaptığınız ilişkilendirmelere benzer Varlık sınıflarında tanımladığınız ilişkilerin tablolarda bulunması da gerekmez.</p>
<p>PHP faces daki 4 adet ilişkisel annotation vardır</p>
<p><strong>@OneToOne</strong> (bire bir)</p>
<p><strong>@OneToMany</strong> (bire çok)</p>
<p><strong>@ManyToOne</strong> (bir çok a bir)</p>
<p><strong>@ManyToMany</strong> (bir çok a bir çok)</p>
<p>Yukarıdaki dört annotationnında üç adet parametreleri bulunmaktadır</p>
<p>mappedBy = “Sınıf adı”</p>
<p>pk = ” birincil anahtar ”</p>
<p>fk = ” yabancı anahtar”</p>
<p>Urun tablomuzda yorumlar adında bir tabloya bir e çok ilişki bulunduğunu ve yorumlar adında da bir varlık sınıfımızın olduğunu varsayalım.</p>
<p><img title="sema1" src="../images/sema1-600x207.jpg" alt="sema1" width="600" height="207" /></p>
<p>bire çok ve birçok a birçok ilişkilerde çok olan taraf bir <strong>ArrayObject</strong> olarak tanımlanmalıdır.</p>
<pre class="brush:csharp">/**

*  @Table(name = "urun")

*/

class Urun extends Entity{

@Id

@Column(name = "id")

*/

private $no;

/**

@Column(name = "fiyat")

*/

private $fiyat;

/**

@Column(name = "ad")

*/

private $adi;

/**

* @OneToMany(mappedBy ="Yorumlar", pk= "no", fk= "urunno")

*/

private   $yorumlar;

public function Urun(){

parent::Entity();

$this-&gt;yorumlar = new ArrayObject();

}

public function set($name, $value) {

$this-&gt;$name= $value;

}

public function get($name) {

return $this-&gt;$name;

}

}</pre>
<p>Yorumlar tablosu için varlık sınıfı bir yorum bir urun için yapılabileceği için yorumlar sınıfındaki ilişki tanımlaması <strong>@OneToOne</strong> şeklinde olmalıdır.</p>
<pre class="brush:csharp">/**

*  @Table(name = "yorumlar")

*/

class Yorumlar extends Entity

{

/**

* @Id

* @Column(name = "no")

*/

private   $no;

/**

* @Column(name = "urunno")

* @OneToOne(mappedBy = "Urun", pk= "no", fk= "id")

*/

private   $urunno;

/**

* @Column(name = "yorum")

*/

private   $yorum;

function get($name) {

return $this-&gt;$name;

}

function set($name,$value) {

$this-&gt;$name = $value;

}

function yorumlar($yorum = null)

{

$this-&gt;yorum= $yorum;

}

}</pre>
<p>Urun sınıfımızın yorumlar ismindeki üyesine erişerek yeni yorumlar ekleyelim</p>
<pre class="brush:csharp">
require_once "config.php";

require_once "urun.php";

require_once "yorumlar.php";

$session = EntityManager::getInstance();

$urun = $session-&gt;find(“Urun”,1);

$urun-&gt;fiyat=222;

$urun-&gt;yorumlar-&gt;append(new Yorum(“Bu bir denemedir yorum 1”));

$urun-&gt;yorumlar-&gt;append(new Yorum(“ORM gerçekten kullanışlıdır buda yorum 2”));

$session-&gt;save($urun);
</pre>
<p>Yukarıdaki Tek bir save satırı veritabanında 3 SQL cümlesi işletilir Yukarıda bahsettiğim gibi ORM hangi sınıfların veritabanından hangi sınıfların dışarıdan oluşturulduğunu algılayabilme kabiliyetine sahip olmalıdır. Sonuçda urun nesnesi için update,  urun sınıfın new ile oluşturulmuş her bir yorum nesnesi için insert cümleleri oluşturulur ve işletilir.</p>
<p>Yorumları aşağıdaki gibi listeleyebiliriz</p>
<p>Foreach($urun-&gt;yorumlar as $oku)</p>
<p>Echo $oku-&gt;yorum;</p>
<p>Yorum sınıfı urun sınıfın üyesi Urun sınıfı da yorum sınıfının üyesidir yorum nesnelerinden de urun’e ulaşılabilir. Tüm ilişkili varlık sınıfı nesneleri birbiriyle öz yinelemeli bir tekrar içindedirler ve bir birlerinin örneklerini referans olarak barındırırlar</p>
<p>Örnekler</p>
<pre class="brush:csharp">
$urun-&gt;yorumlar[0]-&gt;id;

$urun-&gt;yorumlar[0]-&gt;urun-&gt;adi;

$yorum-&gt;urun-&gt;adi;

$yorum-&gt;urun-&gt;yorumlar[1]-&gt;yorum-&gt;urun-&gt;adi;

$yorum-&gt;urun-&gt;yorumlar[0]-&gt;yorum-&gt;yorumlar[1]-&gt;urun-&gt;adi-&gt;yorumlar[3]-&gt;yorum;
</pre>
<p><strong><em> </em></strong></p>
<p><strong><em>Varlık sınıfı oluşturucu (Entity Generator) programı</em></strong></p>
<p>Varlık sınıflarını kendiniz yazmak zorunda değilsiniz siz sadece veritabanınızı tasarlayın bu program varlık sınıflarını sizin için oluşturacaktır. Ancak tablolar arasıdaki ilişkileri tablolarınızı oluştururken tanımlayım bu program ilişkileri tanır.</p>
<p><a href="http://php-faces.googlecode.com/files/generator.zip">http://php-faces.googlecode.com/files/generator.zip</a> programı bu adresten indirebilirsinin unutmadan programın çalışabilmesi için sisteminizde <strong>JVM </strong>bulunmalı! generator.jar isimli dosyayı çalıştırdığınızda kaşınıza aşağıdaki gibi bir pencere gelecek buradan gerekli ayarlamaları yapıp generate butonuna basın ve varlık sınıflarının kayıt edileceği dizini secin. Bundan sonra PHP faces entity generator programının sizin için nasıl PHP kodladığını görün.</p>
<p><img class="alignnone size-full wp-image-3210" title="generator" src="http://www.ceturk.com/images/generator.jpg" alt="generator" width="423" height="384" /></p>
<p><strong><em>Sorgulamalar </em></strong></p>
<p>Faces ORM üzerinde iki çeşit sorgulama şekli vardır <strong>SQL</strong> ve <strong>FQL</strong> (Faces Query Language)</p>
<p>FQL sorguları işletmek için EntityManager’ın <strong>createQuery</strong> metodu kullanılır. Bu metot string bir parametre alır ve bir <strong>Query</strong> nesnesi döndürür. Query nesnesi <strong>PDOStatement</strong> nesnesinden genişletilmiştir.</p>
<p>Query EntityManager::createQuery(String FQL)</p>
<p>Örnek</p>
<pre class="brush:csharp">
$em=  EntityManager::getInstance();

$query =  $em-&gt;createQuery("SELECT  u FROM urun u WHERE u.id =:id");

$id=11;

$query-&gt;bindParam("id", $id);

$query-&gt;execute();

print_r($query-&gt;getResultList())
</pre>
<p>SQL sorguları işletmek için EntityManager’ın <strong>nativeQuery</strong> metodu kullanılır. Bu metot string bir parametre alır ve bir <strong>Query </strong>nesnesi döndürür.</p>
<p>Query EntityManager::nativeQuery(String SQL)</p>
<p>Örnek</p>
<pre class="brush:csharp">
$em=  EntityManager::getInstance();

$query =  $em-&gt;createQuery("SELECT * FROM urun WHERE id = 11");

$query-&gt;execute();

<strong><em>Faces ORM FQL (Faces Query Language) </em></strong>
</pre>
<p>FQL varlık nesneleri üzerinde sorgulama yapmanıza olanak tanıyan SQL e benzer bir sorgulama dilidir. FQL Sorguları PHP Faces Framework tarafından doğal SQL sözcüklerine dönüştürülür.</p>
<p>SELECT İfadesi</p>
<p>SELECT takmaisim FROM sıfıfadı takmaisim WHERE having vb..</p>
<p>Örnekler</p>
<pre class="brush:csharp">
SELECT b from Blog b

SELECT c from Categories c

SELECT b from Blog b WHERE bi.id = 1

SELECT b from Blog b WHERE bi.id = 1 and b.name=‘www’

SELECT b from Blog b limit 0,5

SELECT c from Categories c GROUP BY c.id HAVING AVG(c.id) &gt; 1
</pre>
<p>FQL ile birlikte SQL fonksiyonları kullanımı</p>
<pre class="brush:csharp">
SELECT COUNT(b.id) FROM Blog b

SELECT MAX(b.id) FROM Blog b

entitymanager ile beraber kullanımına örnek

$query= $this-&gt;em-&gt;createQuery("SELECT count(b.id) from bir b");

$query-&gt;execute();

echo  query-&gt;getSingle();
</pre>
<p>FQL de İç içe geçmiş alt sorgular</p>
<pre class="brush:csharp">
SELECT b FROM Blog b WHERE b.coment.id =(SELECT MAX(c.id) FROM Comment c)

SELECT o FROM Object o WHERE o.id = (SELECT  AVG(i.id) FROM Object i) ORDER BY o.name
</pre>
<p>Hüseyin Bora ABACI</p>
<p>Blog</p>
<p><a href="http://www.webmahsulleri.com/">http://www.webmahsulleri.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/web-teknolojileri/php-orm-faces.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Faces MVC 2</title>
		<link>http://www.ceturk.com/programlama/php-faces-mvc-2.html</link>
		<comments>http://www.ceturk.com/programlama/php-faces-mvc-2.html#comments</comments>
		<pubDate>Wed, 14 Oct 2009 22:50:05 +0000</pubDate>
		<dc:creator>Olcay KÜK</dc:creator>
				<category><![CDATA[MVC]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Web Teknolojileri]]></category>
		<category><![CDATA[php faces]]></category>
		<category><![CDATA[PHP Faces MVC 2]]></category>
		<category><![CDATA[PHP MVC]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=3118</guid>
		<description><![CDATA[Merhabalar bu makale PHP Faces MVC yapısını tanıtmayı amaçlayan giriş niteliğinde bir yazıdır.
PHP Faces JSF, Structs, Coldfusion, gibi Uygulama çatılarından bir takım özellikleri örnek almış PHP5 ve üzeri için geliştirilmiş AJAX destekli bir uygulama çatısıdır. PHP Faces’ı PHP tarafındaki diğer çatılardan ayıran en önemli özeliklerinin başında Bileşen tabanlı olması ve olay yönelimli programlama yapmanıza imkân [...]]]></description>
			<content:encoded><![CDATA[<p>Merhabalar bu makale PHP Faces MVC yapısını tanıtmayı amaçlayan giriş niteliğinde bir yazıdır.</p>
<p>PHP Faces JSF, Structs, Coldfusion, gibi Uygulama çatılarından bir takım özellikleri örnek almış PHP5 ve üzeri için geliştirilmiş AJAX destekli bir uygulama çatısıdır. PHP Faces’ı PHP tarafındaki diğer çatılardan ayıran en önemli özeliklerinin başında Bileşen tabanlı olması ve olay yönelimli programlama yapmanıza imkân tanımasıdır.</p>
<p><span id="more-3118"></span>PHP Faces çatısının Model yapısı ORM(Object Relation Mapping) ile desteklenmiştir. Özellikle Java programcılarının PHP de arayıp ta bulamadıkları tarzda bir uygulama çatısıdır.</p>
<p><strong>Kurulum </strong>phpfaces.zip dosyasını bir dizine çıkarın ve ilgili phpfaces klasörünü sunucunuza taşıyın kurulum için yapmanız gereken şimdilik sadece bu kadar.PHP faces’ı diğer frameworkler gibi dizin yapısı ile birliktede kullanabilirsiniz bunun için bir takım ayarlamalar yapmanız gerekli makale giriş niteliğinde olduğundan detaylara fazla girmeyeceğim.</p>
<p><strong>Faces Kontrolcüleri </strong>Çatı içerisinde bileşen desteği olan iki kontrolcü bulunmaktadır bunlar FacesController ve Facete sınıflaraıdır . FacesController java swing uygulamalarındaki gibi listener ara yüzleri ile olay yakalamayı gerçekleştirir. Facete ise Basic ve Delphi dekine benzer bir yapıdadır.</p>
<p><strong>Faces Görünüm</strong> view(görünüm) dosyaları XML biçimini destekler ve &lt;faces&gt;&lt;/faces&gt; etiketleri arasına yazılır.<strong> </strong></p>
<p><strong>Faces Model</strong> Yukarıda da belirdiğim gibi PHP Faces bu katmanda ORM kullanır bunun için sisteminizde PHP PDO eklentisinin kullanılabilir durumda olması gerekmekte.</p>
<p>Aşağıda Controller ve View kullanan basit bir php faces uygulaması var. Bu uygulamada Ad,Soyad,Email,ve adres bilgilerini sunucumuza göndericeğiz ancak uygulamamızın bazı özellikleri var.</p>
<p>Ad&amp;Soyad alanı boş ise bunu kullanıcıya bildiriyoruz yine benzer şekilde email alanındaki bilgi doğru bir e posta adresi değilse bunu da kullanıcıya bir hata olarak bildiriyoruz. Kullanıcı adresi belirlerken iki select kutumuz var. Birinci kutu şehirler için şehir bilgisi değiştiğinde ilçe kutumuzu seçilen şehir’e ait ilçelerle doldurmamız gerekiyor üstelik tüm bunları AJAX kullanarak yapacağız.</p>
<p><img class="alignnone size-full wp-image-3119" title="form" src="http://www.ceturk.com/images/form.jpg" alt="form" width="548" height="220" /></p>
<div>
<pre class="brush:csharp">
&lt;?php
define("BASE_URL","http://localhost/phpfaces/");
require_once ("phpfaces/system/PHPFaces.php");
import("phpf.controllers.facete");
import("io.validator");
class Sayfa extends Facete {
function Sayfa() {
parent::Facete();
$this-&gt;setValidCallBack(true);
$this-&gt;render("gorunum.html");

}
protected function illerChanged($olay) {//iller kutusu değiştiğinde çalışcak olan metot
$tumilceler = array(
"Ankara"=&gt;array(Keçiören,Mamak,Çankaya,Yenimahalle,Sincan),
"İstanbul"=&gt;array( Adalar,Arnavutköy,Ataşehir,Bağcılar,Bakırköy),
"İzmir"=&gt;array( Adalar,Arnavutköy,Ataşehir,Bağcılar,Bakırköy)
);
$il = $this-&gt;iller-&gt;getSelected();
if(array_key_exists($il,$tumilceler))
$this-&gt;ilceler-&gt;setModel($tumilceler[$il]);
else
$this-&gt;ilceler-&gt;setModel(null);
$this-&gt;AjaxResponse();
}
protected function btnClicked($olay) {//btn buttonuna tıklandığında Formumuz post edildiğinde çalışacak metot
$gelen= "Gönderilen &lt;br&gt;&lt;b&gt;Ad soyad = ".$this-&gt;adsoy-&gt;text;
$gelen.= "&lt;br&gt;Email = ".$this-&gt;email-&gt;text;
$gelen.= "&lt;br&gt;Adres = ".$this-&gt;iller-&gt;getSelected()."/".$this-&gt;ilceler-&gt;getSelected()."&lt;/b&gt;";
$this-&gt;gonderilen-&gt;setText($gelen);
$this-&gt;AjaxResponse();
}
}
$sayfa = new Sayfa();
?&gt;</pre>
</div>
<p>Örneğimizin View(Görünüm) dosyası</p>
<div>
<pre class="brush:csharp">
<pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;</pre>
<pre>&lt;html&gt;</pre>
<pre>    &lt;head&gt;</pre>
<pre>    &lt;title&gt;Kayıt&lt;/title&gt;</pre>
<pre>    &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;</pre>
<pre>&lt;/head&gt;</pre>
<pre>&lt;body&gt;</pre>
<pre>&lt;faces&gt;</pre>
<pre>    &lt;@import taglib="phpf.ui.*" prefix="f"/&gt;</pre>
<pre>    &lt;f:form id="form" method="post"&gt;</pre>
<pre>        &lt;table&gt;&lt;tr&gt;&lt;td&gt;   Ad &amp; Soyad : &lt;/td&gt;</pre>
<pre>                &lt;td&gt;</pre>
<pre>            &lt;f:textbox id="adsoy"</pre>
<pre>                       validator="validator"</pre>
<pre>                       rule="required"</pre>
<pre>                       message="Lütfen Ad &amp; Soyad alanı boş bırakmayın"</pre>
<pre>                       messagefor="hata1"/&gt;</pre>
<pre>            &lt;font color="red"&gt;</pre>
<pre>                &lt;f:message id="hata1"/&gt;</pre>
<pre>            &lt;/font&gt;</pre>
<pre>            &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;</pre>
<pre>                &lt;td&gt;Email Adresiniz :&lt;/td&gt;</pre>
<pre>                &lt;td&gt; &lt;f:textbox id="email"</pre>
<pre>                            validator="validator"</pre>
<pre>                            rule="mail"</pre>
<pre>                            message="Hatalı bir e-mail adresi girdiniz."</pre>
<pre>                            success="E-mail adresiniz doğrulandı"</pre>
<pre>                            messagefor="hata2"/&gt;</pre>
<pre>            &lt;font color="red"&gt;</pre>
<pre>                &lt;f:message id="hata2"/&gt;</pre>
<pre>            &lt;/font&gt;</pre>
<pre>            &lt;/td&gt;&lt;/tr&gt;</pre>
<pre>            &lt;tr&gt;</pre>
<pre>                &lt;td&gt;Adres  :&lt;/td&gt;</pre>
<pre>                &lt;td&gt;</pre>
<pre>            &lt;f:combobox id="iller" onchange="ajaxevent"</pre>
<pre>                        bind="array(Ankara,İstanbul,İzmir)"&gt;</pre>
<pre>            &lt;/f:combobox&gt;</pre>
<pre>            &lt;/td&gt;</pre>
<pre>            &lt;tr&gt;&lt;td&gt;İlçe :&lt;/td&gt;&lt;td&gt;</pre>
<pre>            &lt;f:combobox id="ilceler"</pre>
<pre>                        bind="array(Keçiören,Mamak,Çankaya,Yenimahalle,Sincan)"&gt;</pre>
<pre>            &lt;/f:combobox&gt;</pre>
<pre>            &lt;/td&gt;&lt;/tr&gt;</pre>
<pre>            &lt;tr&gt;&lt;td colspan="1"&gt;</pre>
<pre>            &lt;f:button id="btn" text="Formu Gonder" onclick="ajaxevent" forname="form"/&gt;</pre>
<pre>            &lt;/td&gt;&lt;/tr&gt;</pre>
<pre>    &lt;/f:form&gt;</pre>
<pre>&lt;/table&gt;</pre>
<pre>&lt;f:label id="gonderilen" &gt;&lt;/f:label&gt;</pre>
<pre>&lt;/faces&gt;</pre>
<pre>&lt;/body&gt;</pre>
<pre>&lt;/html&gt;</pre>
</pre>
</div>
<p>Yukarıdaki örneğimizde tek bir satır bile Javascirpt yazmadan tüm işlemlerimizi MVC içerisinde AJAX kullanarak kolay bir şekilde uyguladık. Eğer AJAX kullanmak istemiyorsanız görünüm dosyasındaki yerine yazmak ve kontrolcümüzdeki  $this-&gt;AjaxResponse(); satırlarını kaldırmak olacak. Bu makalede PHP Faces çatısının C(controller) ve V(View) katmanlarını uygulayarak anlatmaya çalıştım PHPFaces model katmanı başlı başına bir ORM çatısı gibidir. İlerleyen günlerde bu konuda bir makale hazırlaya bilirim. Aşağıda PHPFaces’ı hakkında bazı bağlantıları bulabilirsiniz şimdilik hoşcakalın.</p>
<p><strong>Hüseyin Bora ABACI</strong></p>
<p><strong>PHP Faces çatısını indirmek için.</strong></p>
<p><strong><a href="http://php-faces.googlecode.com/files/phpfaces.zip">http://php-faces.googlecode.com/files/phpfaces.zip</a></strong></p>
<p><strong>PHP Faces için PDF formatında Türkçe e kitap.</strong></p>
<p><strong><a href="http://php-faces.googlecode.com/files/PHP%20Faces.pdf">http://php-faces.googlecode.com/files/PHP%20Faces.pdf</a></strong></p>
<p><strong>PHP Faces blog</strong></p>
<p><strong>http://www.webmahsulleri.com</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/programlama/php-faces-mvc-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erkan Balaban – PHP MVC Demo Videosu</title>
		<link>http://www.ceturk.com/genel/erkan-balaban-php-mvc-demo-videosu.html</link>
		<comments>http://www.ceturk.com/genel/erkan-balaban-php-mvc-demo-videosu.html#comments</comments>
		<pubDate>Mon, 12 Oct 2009 11:56:20 +0000</pubDate>
		<dc:creator>Yönetici</dc:creator>
				<category><![CDATA[CETURK TV]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Seminerler]]></category>
		<category><![CDATA[Web Teknolojileri]]></category>
		<category><![CDATA[ceviz.net]]></category>
		<category><![CDATA[Compec]]></category>
		<category><![CDATA[PHP MVC]]></category>
		<category><![CDATA[PHP MVC demo]]></category>
		<category><![CDATA[Seminer]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[Web tekno]]></category>
		<category><![CDATA[Web Teknolojileri Günü]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=2503</guid>
		<description><![CDATA[CETURK &#8211; Ceviz.Net &#8211; Compec işbirliği ile Boğaziçi Üniversitesi&#8216;nde, 9 Mayıs 2009 Cumartesi günü düzenlenen &#8220;Web Teknolojileri Günü&#8221; etkinliğinde Erkan Balaban PHP MVC Sunumunde yaptığı demoyu sizinle paylaşıyoruz.
Erkan Balaban PHP MVC Sunumu
PHP MVC Demo
]]></description>
			<content:encoded><![CDATA[<p>CETURK &#8211; Ceviz.Net &#8211; <a href="../etiket/compec">Compec </a>işbirliği ile <a href="../etiket/bogazici-universitesi">Boğaziçi Üniversitesi</a>&#8216;nde, 9 Mayıs 2009 Cumartesi günü düzenlenen &#8220;<a href="../etiket/web-teknolojileri-gunu">Web Teknolojileri Günü</a>&#8221; etkinliğinde Erkan Balaban PHP MVC Sunumunde yaptığı demoyu sizinle paylaşıyoruz.</p>
<p><a href="http://www.ceturk.com/web-teknolojileri/erkan-balaban-php-mvc-seminer-videosu.html">Erkan Balaban PHP MVC Sunumu</a><br />
<a href="http://www.ceturk.com/genel/erkan-balaban-php-mvc-demo-videosu.html">PHP MVC Demo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/genel/erkan-balaban-php-mvc-demo-videosu.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
