<?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>Huysuz Adam &#187; ZF Kurulum</title>
	<atom:link href="http://www.huysuzadam.com/tag/zf-kurulum/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.huysuzadam.com</link>
	<description>Web teknolojileri ile ilgili teknik bir blog...</description>
	<lastBuildDate>Fri, 12 Feb 2010 07:24:13 +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>Zend Framework 1.8 Kurulumu</title>
		<link>http://www.huysuzadam.com/2009/07/14/zend-framework-1-8-kurulumu/</link>
		<comments>http://www.huysuzadam.com/2009/07/14/zend-framework-1-8-kurulumu/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 15:26:05 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[ZF Örnek]]></category>
		<category><![CDATA[ZF Kurulum]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/?p=287</guid>
		<description><![CDATA[Daha önce ZF 1.5.2 için bir örnek oluşturmuştum. Ancak 1.8 versiyonundan itibaren işler biraz değişti. Aslında proje yaratmak oldukça kolaylaştı ama ilk kurulum biraz uğraştırabilir.
ZF 1.8&#8242;den itibaren, ilk kez 1.7 versiyonunda gelen Zend_Tool epey önplana çıktı. Artık &#8220;zf create project&#8221; gibi bir komutla çalışır bir proje elde etmek mümkün. Tabii gerekli ayarları yaptıktan sonra&#8230;

Zend Framework [...]]]></description>
			<content:encoded><![CDATA[<p>Daha önce <a href="http://www.huysuzadam.com/2008/06/11/zend-frameworke-giris-ve-ornek-proje/">ZF 1.5.2 için bir örnek</a> oluşturmuştum. Ancak 1.8 versiyonundan itibaren işler biraz değişti. Aslında proje yaratmak oldukça kolaylaştı ama ilk kurulum biraz uğraştırabilir.</p>
<p>ZF 1.8&#8242;den itibaren, ilk kez 1.7 versiyonunda gelen Zend_Tool epey önplana çıktı. Artık &#8220;zf create project&#8221; gibi bir komutla çalışır bir proje elde etmek mümkün. Tabii gerekli ayarları yaptıktan sonra&#8230;</p>
<p><span id="more-287"></span></p>
<h2>Zend Framework Kurulumu</h2>
<p>Bu örnek windows için oluşturulmuştur ama linux ve mac için de mantık benzerdir.</p>
<p>Düzgün ve çalışan bir Apache &#8211; PHP &#8211; MySQL kurulumu olduğu varsayılmıştır.</p>
<p>PHP&#8217;nin &#8220;C:\php&#8221; altında olduğu varsayılmıştır.</p>
<p>Zend Framework 1.8.4 ile test edilmiştir, eski versiyonlarda çalışmayacağı garanti olup ileriki versiyonlar için söz veremem zira Zend zırt pırt değiştiriyor yapıyı&#8230;</p>
<h3>Yapılacaklar</h3>
<ul>
<li>Her projede ayrı ayrı kopyalar oluşturmamak için ZF&#8217;ü genel bir dizine koyup php&#8217;nin include_path&#8217;ine ekleyeceğiz.</li>
<li>Projeleri otomatik yaratan zf.bat betiğine erişebilmek için zf.bat  ve php.exe dosyalarının sistem PATH&#8217;ine ekleyeceğiz.</li>
<li>Projeyi web sunucusunun kök dizini <strong>dışındaki</strong> bir &#8220;Projeler&#8221; dizininde oluşturacağız. (Güvenlik nedeniyle asla webroot&#8217;ta oluşturmayın!)</li>
<li>Kök dizini dışında olduğumuz için bir virtual host tanımlayacağız. Böylece şık adreslerimiz de düzgün çalışacak.</li>
<li>Projemizi test edip ilk kez çalıştığını göreceğiz.</li>
</ul>
<p><strong>Projenin Geliştirilmesi</strong> (Sonraki Yazı)</p>
<ul>
<li> Proje dizin yapısına bir göz atacağız.</li>
<li>Proje ile ilgili ilk ayarları yapacağız (application.ini)</li>
<li>Veritabanıyla ilgili işlemler için bir model yaratacağız.</li>
<li>Birkaç action oluşturacağız ama silemeyeceğiz !?!? (Açıklaması var)</li>
<li>Bir layout oluşturup view&#8217;lerimizi bu layout ile ilişkilendireceğiz.</li>
<li>Basit bir helper oluşturacağız.</li>
</ul>
<h2>Kurulum</h2>
<p>Öncelikle <a href="http://framework.zend.com/download/latest">son versiyonu</a> indirmekle başlayalım. Full versiyona şimdilik gerek yok o yüzden minimal olan versiyonu indirebilirsiniz.</p>
<p>İndirdiğiniz arşivi açtığınızda bin ve library olmak üzere iki dizin göreceksiniz. Bu dizinlerden bin içerisinde zf.bat, zf.php ve zf.sh dosyaları bulunur. Bu dosyalarla ilgili tanımları yaptıktan sonra projeyi otomatik olarak oluşturacak betikler bunlardır. Diğer dizin olan library altında ise Zend Framework bulunuyor.</p>
<h3>ZF&#8217;ün PHP include_path&#8217;ine Eklenmesi</h3>
<p>PHP kurulumunuzun &#8220;C:\php&#8221; altında olduğunu farz ederek, &#8220;C:\php\ZF&#8221; diye bir dizin oluşturun.</p>
<p>PEAR kütüphanesinin de &#8220;C:\php&#8221; içerisinde olduğunu düşünerek en uygun yerin burası olduğuna karar verdim ama başka yerlere kurmak da mümkün aslında.</p>
<p>Kütüphaneye erişebilmek için php.ini dosyasını açıp <strong>include_path</strong> tanımlamasına &#8220;C:\php\ZF\library&#8221; dizinini ekleyin.</p>
<div style="border-top: 1px solid #cccc99; border-bottom: 1px solid #cccc99; padding: 8px; background-color: #ffffcc;"><strong>Notlar</strong></p>
<ul>
<li>Doğru php.ini&#8217;yi güncellediğinizden emin olun. Bunun için bir php dosyasına &#8220;phpinfo();&#8221; yazıp çalıştırdıktan sonra &#8220;Loaded Configuration File&#8221; kısmına bakın.</li>
<li>PEAR kurduysanız php.ini dosyasının en sonunda bir include_path tanımı daha olabilir.</li>
<li>Birden fazla dizin tanımlanacaksa windows için noktalı virgül, linux ve mac için iki nokta ile ayırılması gerekir. Benim windows bilgisayarımdaki include_path&#8217;in son hali: include_path=&#8221;.;C:\php\pear;C:\php\ZF\library&#8221;</li>
</ul>
</div>
<p>Apache&#8217;yi yeniden başlattığınızda include_path tanımı sayesinde artık hangi dizinde olursa olsun php içerisinden require(&#8220;Zend/&#8230;.&#8221;); şeklinde dosya çağırabilir hale geldiniz. Ama çağırmanıza gerek olmayacak o ayrı.</p>
<h3>ZF Betiğinin Çalıştırılabilir Dizinlere (Path) Eklenmesi</h3>
<p>Bunun için Control Panel → System → Advanced System Settings penceresine gidin (Türkçe windows kullanıcıları başının çaresine baksın).</p>
<p>Environment Varibles&#8217;a tıklayınca açılan penceredeki System Variables altından PATH değişkeninin sonuna &#8220;C:\php\ZF\bin&#8221; ve &#8220;C:\php&#8221; dizinlerini ekleyin. (Noktalı virgülle ayırarak)</p>
<p>Bu aşamadan sonra bilgisayarınız baştan başlatmanız gerekecek maalesef. (Logout &#8211; Login kurtarmaz).</p>
<p>Buraya kadar eğer doğru bir şekilde yaptıysanız &#8220;Command Prompt&#8221; açıp &#8220;zf show version&#8221; yazdığınız zaman şöyle bir şey görmeniz lazım:</p>
<pre>Zend Framework Version: 1.8.4</pre>
<h3>İlk Projemizin Oluşturulması</h3>
<ul>
<li>Eğer yoksa, projeler ile ilgili web sunucunun <strong>kök dizininden farklı bir yere</strong> bir dizin oluşturun. Mesela benimkisi &#8220;D:\Projeler&#8221;.</li>
<li>Bir &#8220;Command Prompt&#8221; açın ve o dizine cd ile gidin. Projeniz için dizin yaratmayın! zf.bat sizin için otomatik olarak halledecek bunu.</li>
<li> Şu komutu verin:
<pre>zf create project zf_deneme</pre>
</li>
</ul>
<p>ZF betiği projeler dizini altında <strong>zf_deneme</strong> diye bir dizin oluşturacak ve başlangıç için önerilen dizin yapısını oluşturacaktır:</p>
<p><img class="size-full wp-image-292" src="http://www.huysuzadam.com/wp-content/uploads/2009/07/zf_directory_structure.gif" alt="Zend Framework Directory Structure" width="185" height="433" /></p>
<h3>Virtual Host Tanımlaması</h3>
<p>Aslında virtual host olayına girmeden de çalışır hale getirmek mümkün. Bir &#8220;<strong>Alias</strong>&#8221; oluşturulabilir (Bkz. <a href="http://www.huysuzadam.com/2008/06/11/zend-frameworke-giris-ve-ornek-proje/">önceki yazım</a>), ya da güvenliği boşverip doğrudan kök dizinine yerleştirilebilir ki kesinlikle tavsiye etmiyorum, alışmayın&#8230; Ancak her halükarda public dizini için &#8220;<strong>AllowOverride All</strong>&#8221; tanımını yapmalısınız.</p>
<p>Windows&#8217;da virtual host tanımlamak için önce httpd.conf dosyasını bulun. Bu dosyada:</p>
<pre>NameVirtualHost *:80</pre>
<p>satırının comment&#8217;li olmadığından emin olun. Eğer rewrite modülü yüklü değilse</p>
<pre>LoadModule   rewrite_module   modules/mod_rewrite.so</pre>
<p>satırını ekleyin ya da başındaki commenti kaldırın.</p>
<p>Virtual host ile ilgili diğer tanımların bulunduğu yere aşağıdakileri tanımlayın (Bu arada virtual host tanımlamaları ayrı bir dosyada tutuluyor da olabilir, apache&#8217;nin conf dizinine bir bakın) :</p>
<pre>&lt;VirtualHost *:80&gt;
  ServerName localhost
&lt;/VirtualHost&gt;

&lt;VirtualHost *:80&gt;
  ServerName zf_deneme.localhost
  DocumentRoot D:\Projects\zf_deneme\public
  &lt;Directory "D:\Projects\zf_deneme\public"&gt;
    AllowOverride All
  &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</pre>
<p>Yaptığınız değişikliklerin geçerli olması için apache&#8217;yi restart etmeniz gereklidir.</p>
<p>Son olarak <strong>C:\Windows\System32\drivers\etc</strong> dizinindeki <strong>hosts</strong> dosyasını notepad ile açın ve içerisine</p>
<pre>127.0.0.1       zf_deneme.localhost</pre>
<p>satırını ekleyin. Windows&#8217;u restart etmenize gerek yok&#8230;</p>
<p>Artık <strong>http://zf_deneme.localhost/</strong> adresine bağlandığınızda projenize erişebiliyor olmanız lazım:</p>
<p><img class="aligncenter size-full wp-image-295" style="border: 3px solid #ccc;" title="zf_gettingstarted_screenshot" src="http://www.huysuzadam.com/wp-content/uploads/2009/07/zf_gettingstarted_screenshot.jpg" alt="Zend Framework Kurulumu" width="480" height="427" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2009/07/14/zend-framework-1-8-kurulumu/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Zend Framework&#8217;e giriş ve örnek proje</title>
		<link>http://www.huysuzadam.com/2008/06/11/zend-frameworke-giris-ve-ornek-proje/</link>
		<comments>http://www.huysuzadam.com/2008/06/11/zend-frameworke-giris-ve-ornek-proje/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 11:13:03 +0000</pubDate>
		<dc:creator>M.Ozan Hazer</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[ZF Örnek]]></category>
		<category><![CDATA[ZF Kurulum]]></category>

		<guid isPermaLink="false">http://www.huysuzadam.com/2008/06/11/zend-frameworke-giris-ve-ornek-proje/</guid>
		<description><![CDATA[Zend Framework&#8216;ün  dokümanlarını okuyarak hızlı bir başlangıç yapmanız (quickstart) neredeyse  imkansız. Bu nedenle Zend Framework&#8217;e başlamak isteyenler için örnek bir proje  hazırlamaya karar verdim. 
  Hazırladığım  sıkıştırılmış dosyayı açıp web sunucusu ayarlarında yaptıktan sonra çalışan,  basit bir örneğe sahip olacaksınız. Kodlar bir sürü yorumumla dolu, dolayısıyla  kodları okuyarak [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://framework.zend.com/">Zend Framework</a>&#8216;ün  <a href="http://framework.zend.com/docs/quickstart">dokümanlarını</a> okuyarak hızlı bir başlangıç yapmanız (quickstart) neredeyse  imkansız. Bu nedenle Zend Framework&#8217;e başlamak isteyenler için örnek bir proje  hazırlamaya karar verdim. </p>
<p>  Hazırladığım  sıkıştırılmış dosyayı açıp web sunucusu ayarlarında yaptıktan sonra çalışan,  basit bir örneğe sahip olacaksınız. Kodlar bir sürü yorumumla dolu, dolayısıyla  kodları okuyarak birçok şeyi anlayabilirsiniz.</p>
<p>  Baştan şunu belirtmeliyim  ki Zend Framework bana göre kesinlikle acemiler için bir framework değil. Otomasyon  özellikleri de çok zayıf. Eğer <a href="http://www.rubyonrails.org/">Ruby on Rails</a> (RoR) ayarında bir framework arıyorsanız  <a href="http://cakephp.org/">CakePHP</a> ya da <a href="http://codeigniter.com/">CodeIgniter</a>&#8216;ı (CI) takip etmelisiniz.</p>
<p>  Zend Framework&#8217;ün  avantajı tamamen bağımsız kullanılabilen modülleri sayesinde kendi kurallarını  koymak isteyen ustalar için sağlam ve hızlı bir altyapı sunması. Dolayısıyla ZF  kullanılarak Rails, CI ya da CakePHP ayarında bir alt-framework yaratılabilir.</p>
<h2>Örnek Zend Framework Projesi</h2>
<div style="background-color:#FFFFCC; border-top:1px solid #CCCC99; border-bottom:1px solid #CCCC99; padding:8px;">
<table border="0" cellspacing="1" cellpadding="3">
<tr>
<td><a href="http://www.huysuzadam.com/wp-content/uploads/2008/06/zf_ornek_proje.zip">zf_ornek_proje.zip</a></td>
<td>18 kB</td>
<td>(ZF ayrıca indirilip lib altına konmalı)</td>
</tr>
<tr>
<td><a href="http://www.huysuzadam.com/wp-content/uploads/2008/06/zf_ornek_proje_full.zip">zf_ornek_proje_full.zip</a></td>
<td>3.05 MB</td>
<td>(ZF 1.5.2 içerir)</td>
</tr>
</table>
</div>
<p><span id="more-144"></span></p>
<h2>Gereksinimler</h2>
<ol>
<li>Nesne  yönelimli PHP bilgisi olan bir programcı!</li>
<li>Apache  uzmanı olmasa da temel apache konfigürasyonu yapabilecek bir zat-ı muhterem. Bu  zat programcı ile aynı kişi olursa tadından yenmez&#8230;</li>
<li>PHP  5, Apache, MySQL . ZF&#8217;nin php4&#8242;ü desteklemediğini hatırlatırım.</li>
<li>Apache  için <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html">mod_rewrite</a></li>
<li>PHP5  için <a href="http://www.php.net/manual/en/book.mysqli.php">mysqli</a> ya da <a href="http://www.php.net/pdo">PDO</a> extension&#8217;ı. Mysql extension&#8217;ı desteklenmiyor. Ben mysqli  kullandım, PDO için <b>application/config.ini</b>&#8216;yi değiştirin.</li>
<li>PHP  ayarlarından <b>short_open_tag</b> : on olarak ayarlanmalıdır. Eğer bu ayarı  yapamıyorsanız <b>application/view/scripts/</b> altındaki dosyalardaki <b><font color="#CC0000">&lt;?=</font></b>  geçen yerleri <b><font color="#CC0000">&lt;?php echo</font></b> ile değiştirmeniz gerekebilir. (Bkz. php.ini)</li>
</ol>
<h2>Notlar</h2>
<ol>
<li>Windows  XP Pro, PHP 5.2.5, Apache 2.2, MySQL 5 kullandım. Farklı  platformlar için yorumlamak size kalmış.</li>
<li>Bu  doküman ZF 1.5.2 için hazırlandı. Yeni versiyonlarda kullanmak isterseniz  mutlaka uyumluluk (compatibility) notlarına göz atın. Yeni versiyonlar çıktığı zaman temel  mantık aynı kalmasına rağmen ufak tefek uygulama farkları olabiliyor.</li>
<li>Internetteki  diğer dokümanlarda dizin adları fark edebilir, özellikle de <b>lib</b> dizini ile <b>public</b>. Bu dizinlerin isimleri çok önemli değil, ancak <b>application</b> dizini ve altındaki isimler  önemli. </li>
<li>Zend  Framework UTF-8 ile çalışılmasını önerir. Ben de öneririm ve örnekler  utf-8&#8242;dir. Kullandığınız editörün utf-8 ile problemi varsa dosyaları bozabilir  bu da türkçe karakter sorunu yaşamanıza neden olabilir.<br clear="all"/>
</li>
</ol>
<h2>Örneği Nasıl Çalıştıracaksınız?</h2>
<ol>
<li>Hazırladığım  zip dosyasını bilgisayarınıza indirin</li>
<li>Webroot  olarak <b>tanımlanmamış </b>bir dizine zip&#8217;i  açın.</li>
<li>Web  sunucusundan <b>public </b>dizinine erişim  sağlayın (alias, vhost ya da documentroot yaparak)</li>
<li>Web  sunucusunda gerekli rewrite tanımlamasını yapın.</li>
<li><b>application</b> dizini altındaki <b>config.ini</b>&#8216;den veritabanı ayarlarını yapın.</li>
<li><b>sql </b>dizini altındaki zftest.sql&#8217;i mysql&#8217;e import edin  ve <b>zftest</b> veritabanına gerekli  yetkileri verin.</li>
</ol>
<h2>Dizin Yapısı</h2>
<pre style="font-family:Consolas, 'DejaVu Sans Mono', 'Courier New'; font-size:12px;">
/application   (Kodlama işlerinizin %99'u bu dizin altında  yapılacak)
  /controllers
  /models
  /views
    /helpers
    /scripts

/lib         (Kütüphaneler burada yer alacak, ZF de  dahil)
  /Zend

/public      (Webroot dizini.  Doğrudan erişilecek dosyalar burada)
  /images
  /css
  /js

/sql         (Örnek veritabanının sql'i burada)
</pre>
<h2>Web Sunucusu Ayarları</h2>
<p>Uygun bir dizin  altında zftest adında bir dizin açın. <br />
  Örneğin benim bilgisayarımda webroot <b>c:\apache\htdocs</b> olarak tanımlı ve ben<b> c:\apache\zftest</b> olarak açmayı tercih ettim. <br />
  Doğrudan htdocs altında açmadığıma  dikkatinizi çekerim! </p>
<p>  Zip dosyasının içeriğini  zftest altına taşıyın, elinizde şu dizinler olacak:</p>
<pre style="font-family:Consolas, 'DejaVu Sans Mono', 'Courier New'; font-size:12px;">
  C:\apache\zftest\application
  C:\apache\zftest\lib
  C:\apache\zftest\public
  C:\apache\zftest\sql
</pre>
<p>  Apache&#8217;nin  ayarlarından zftest projemiz için bir alias tanımlayalım:</p>
<pre style="font-family:Consolas, 'DejaVu Sans Mono', 'Courier New'; font-size:12px;">
alias /zftest  &quot;c:\apache\zftest\public&quot;
&lt;Directory &quot;c:\apache\zftest\public&quot;&gt;
  AllowOverride All
  Order allow,deny
  Allow from all

  RewriteEngine on

  # RewriteBase sadece alias yapıldığı zaman  gerekli.
  # Vhost ya da DocumentRoot'a kurarsanız gerek yok
  RewriteBase /zftest
  RewriteCond %{SCRIPT_FILENAME} !-f
  RewriteCond %{SCRIPT_FILENAME} !-d

  # Adres kısmına ne yazılırsa yazılsın public/index.php handle edecek
  RewriteRule !\.(js|ico|gif|jpg|png|css)$  index.php
&lt;/Directory&gt;
</pre>
<p></p>
<p><b>Notlar</b></p>
<ol>
<li><b>zftest/public</b> yerine <b>zftest</b> dizinini webroot yapsaydık, diğer dizinlerin altındaki dosyalar doğrudan çağırılabilir  ve güvenlik açığı çıkabilirdi. Örneğin <a href="http://localhost/application/config.ini">http://localhost/application/config.ini</a> adresini keşfeden biri veritabanı şifrenizi öğrenebilir.</li>
<li>Alias  oluşturmak benim kişisel tercihim. Birden fazla proje olursa her biri için  alias tanımı yapmak daha kolay olacaktır. Ama arzu ederseniz web sunucunun  DocumentRoot&#8217;unu da c:\apache\zftest\public yapabilirsiniz. Bir başka yöntem de  virtual host tanımlamak olabilir.</li>
</ol>
<h2>Oluşabilecek Muhtelif Hatalar</h2>
<p>Apache&#8217;yi yeniden  başlatıp sunucuya bağlandığınızda izin hatası (forbidden) alırsanız </p>
<ol>
<li><strong>&lt;Directory  &quot;c:\apache\zftest\public&quot;&gt;</strong> kısmındaki dizin yolu ile alias&#8217;ta  verilen dizin yolu aynı olmayabilir.</li>
<li>Apache  ayarlarından <strong>DirectoryIndex</strong> komutu index.php&#8217;yi içermiyor olabilir. Şuna benzer  bir satır olması lazım: <br />
    DirectoryIndex index.html index.php</li>
<li>PHP için <strong>short_open_tags</strong> parametresinin açık olduğundan emin olun&#8230;
</li>
</ol>
<p>Eğer sayfa yerine dizin  yapısını görüyorsanız yine DirectoryIndex komutunda index.php yer almıyor  olabilir.</p>
<p>Rewrite ile ilgili problemlerde mod_rewrite&#8217;ın yüklendiğinden emin olun. Debian sistemlerde a2enmod ile aktif hale getirmeniz gerekebilir.</p>
<p>  <i>Karşılaştığınız  diğer hataları bana iletirseniz buraya eklerim.</i></p>
<h2>Nereden Başlamak lazım?</h2>
<p>Örnek çok basit  bir telefon rehberi. Yeni kayıt ekleyin, silin, güncelleyin. Daha sonra sırasıyla  aşağıdaki dosyaları inceleyerek nasıl çalıştığını anlamaya çalışın. İçerlerine  bol bol yorum (comment) yazdım:</p>
<p>  Public/index.php<br />
  Application/controllers/IndexController.php <br />
  Application/views/scripts/index/index.phtml<br />
  Application/models/Phone.php</p>
<p>  Daha sonra &quot;deneme&quot;  sayfalarına bakabilirsiniz: Model, View ve Controller kısımlarını anlamanızda faydası olacaktır.</p>
<h2>Örnekteki yaklaşım ile ilgili</h2>
<p>Zend Framework;  Rails, CakePHP, CodeIgniter, Django gibi frameworklerin aksine gerekli altyapıyı  sunup çözümleri programcıya bırakan bir yapı. Dolayısıyla aynı problemleri farklı  yöntemlerle çözebilirsiniz. Bu konuda bazı tercihlerim var:</p>
<ol>
<li><b>View ile ilgili:</b> Template sistemlerinde genelde iki türlü yaklaşım  tercih edilir. Biri her template&#8217;ın başına header, sonuna footer koymak; diğeri  ise bir layout belirleyip o layouttaki boşluklara içerik koymak. Her ne kadar  layot yöntemi birçok durum için daha pratik de olsa ben bu örnekte header /  footer yöntemini kullandım.</li>
<li><b>Model ile ilgili:</b> Model&#8217;da Zend_Db_Table kullanmak da bir opsiyon  ancak kişisel görüşüm bu yapının çok kullanışsız olduğu yönünde olduğu için ve  internetteki diğer tüm dokümanlarda zaten Zend_Db_Table ile örnek verildiği  için Zend_Db kullanarak model&#8217;i oluşturmayı tercih ettim.</li>
<li><b>Controller ile ilgili:</b> Birçok benzer örnekte tüm &#8220;controller&#8221;ları kapsayan tanımlamaların nasıl yapılacağına pek değinilmemiş. Bu konuda ben bir &#8220;DefaultController&#8221; kullandım ve diğer controller&#8217;ları DefaultController&#8217;dan extend ettim. Farklı bir yaklaşım olarak &#8220;plug-in&#8221;ler kullanılabilir. DefaultController&#8217;a göz atmayı unutmayın&#8230;</li>
</ol>
<h2>Neler Eksik?</h2>
<p>Bu örnekte proje  geliştirirken sıkça kullanılan bazı gereksinimleri içermedim. Bazılarını basitlikten  ödün vermemek için, bazılarını &#8212; dürüst olmak gerekirse &#8212; tam olarak bilmediğim için, bazılarını ZF dokümanlarından okuyup uygulayabileceğiniz, bazılarını ise  ZF tarafından üretilen çözümlerinden hoşlanmadığım ya da uygulamasından hoşlanmadığım  için&#8230;</p>
<p><b>Eksikler:</b></p>
<ol>
<li>Veri  kontrolleri (Data Validation and Sanitization)</li>
<li>Sayfalandırma  (Pagination)</li>
<li>Layout</li>
<li>Önbellekleme  (Caching)</li>
<li>Birim  testleri (Testing)</li>
<li>Çoklu  dil desteği  (Localization &amp;  Internationalization)</li>
<li>ZF  ile verilen servisler (Services)</li>
<li>Otomatik  form üretimi (Zend_Form)</li>
<li>ORM &#8211;  ActiveRecord Pattern</li>
</ol>
<p>Bu önemli eksiklere  rağmen Zend Framework&#8217;e başlayanlar için işe yarayacağını düşünüyorum.</p>
<p>  Kolay gelsin ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.huysuzadam.com/2008/06/11/zend-frameworke-giris-ve-ornek-proje/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
	</channel>
</rss>
