﻿<?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>ibonette.com &#187; MVC</title>
	<atom:link href="http://www.ibonette.com/tag/mvc/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ibonette.com</link>
	<description>Samimi olmayi vaat edebilirim ama tarafsiz olmayi asla...</description>
	<lastBuildDate>Thu, 09 Sep 2010 14:12:06 +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>CodeIgniter -2: Controller</title>
		<link>http://www.ibonette.com/codeigniter-2-controller/</link>
		<comments>http://www.ibonette.com/codeigniter-2-controller/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 13:03:04 +0000</pubDate>
		<dc:creator>ibrahim</dc:creator>
				<category><![CDATA[PROGRAMLAMA]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[codeigniter controller]]></category>
		<category><![CDATA[controller]]></category>
		<category><![CDATA[Controllerları Alt Klasörlerde Organize Etmek]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Medotlar (Fonksiyonlar)]]></category>
		<category><![CDATA[Metod Parametresini url İle Geçirmek]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php framework]]></category>
		<category><![CDATA[Sınıf Yapılandırıcıları (Class Constructors)]]></category>
		<category><![CDATA[Varsayılan Controller Tanımlama]]></category>

		<guid isPermaLink="false">http://www.ibonette.com/?p=93</guid>
		<description><![CDATA[Bir önceki yazımda CodeIgniter ' a başlangıç yapmıştık. Şimdi konuyu biraz daha ilerletip CodeIgniter çalışma yapısını anlamak için öncelikle kavramamız  gereken MVC 'nin ilk ayağına, yani controller kavramına değineceğiz.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ibonette.com/codeigniter-1-baslangic/" target="_blank">Bir önceki</a> yazımda CodeIgniter &#8216; a başlangıç yapmıştık. Şimdi konuyu biraz daha ilerletip CodeIgniter çalışma yapısını anlamak için öncelikle kavramamız  gereken MVC &#8216;nin ilk ayağına, yani controller kavramına değinerek ilk programımızı yazacağız.</p>
<p>Controller, basit olarak bir link ile çağırılabilen bir class dosyasıdır. Örneğin : aşağıdaki örnekte CI   <em>blog.php</em> isimli controllerı bulup yüklemeye çalışır. Sonuç olarak url deki ilk bölümle aynı isimli class dosyası çalıştırılır. Linkte .php uzantısının kullanılmadığına dikkat edin&#8230;</p>
<p>www.siteadiniz.com/index.php/blog/</p>
<p><strong>Merhaba Dünya</strong></p>
<p>Herhangi bir metin editöründe aşağıdaki kodu yazarak <em>blog.php</em> ismi ile application/controllers/  dizininin içine kaydedelim; (Kod içindeki class ismi büyük harfle başlamalıdır. Küçük harfle başlayamaz. blog olamaz Blog olmalıdır.)</p>
<pre><strong><span><strong><code><span style="color: #000000;"><span style="color: #0000bb;">&lt;?php
</span><span style="color: #007700;">class </span><span style="color: #0000bb;">Blog </span><span style="color: #007700;">extends </span><span style="color: #0000bb;">Controller </span><span style="color: #007700;">{
    function </span><span style="color: #0000bb;">index</span><span style="color: #007700;">()
    {
        echo </span><span style="color: #dd0000;">'Merhaba Dünya!'</span><span style="color: #007700;">;
    }
}
</span><span style="color: #0000bb;">?&gt;</span></span></code></strong></span></strong></pre>
<p>Şimdi aşağıdaki linke girin;<br />
www.siteadiniz.com/index.php/blog/<br />
Doğru yaptıysanız “Merhaba Dünya!”  yazısını göreceksiniz.</p>
<p><strong>Metodlar (Fonksiyonlar)</strong></p>
<p>Bildiğiniz gibi sınıfların en önemli parçalarından birisi metotlardır. Controllerında bir sınıf olduğunu söylemiştik. Aynen url nin ilk parçasında ilgili kontrollerı çalıştırdığımız gibi, metod ve metodların parametrelerini de url ile içerisinden çağırabiliriz.</p>
<p>Yukarıdaki örnekte çalışacak metod ismi index() dir. Url nin ikinci bölümü boş ise index() varsayılan olarak yüklenir.  Yukarıdaki örnekte “Merhaba Dünya!” yazısını görmenin bir diğer yolu ise aşağıdaki linki takip etmektir.</p>
<p>www.siteadiniz.com/index.php/blog/index/</p>
<p><em>Url nin ikinci bölümü, controller ın hangi fonksiyonu çağırdığını belirler.</em></p>
<p>Şimdi yukarıdaki örneği aşağıdaki şekilde değiştirelim; (değişikliği blog.php dosyasında yapacaksınız)</p>
<pre><strong><span><strong><code><span style="color: #000000;"><span style="color: #0000bb;">&lt;?php
</span><span style="color: #007700;">class </span><span style="color: #0000bb;">Blog </span><span style="color: #007700;">extends </span><span style="color: #0000bb;">Controller </span><span style="color: #007700;">{
    function </span><span style="color: #0000bb;">index</span><span style="color: #007700;">()
    {
        echo </span><span style="color: #dd0000;">'</span></span></code></strong></span></strong><strong><span><span><strong><span><strong><code><span style="color: #000000;"><span style="color: #dd0000;">Merhaba Dünya!</span></span></code></strong></span></strong></span></span></strong><strong><span><strong><code><span style="color: #000000;"><span style="color: #dd0000;">'</span><span style="color: #007700;">;
    }
    function </span><span style="color: #0000bb;">comments</span><span style="color: #007700;">()
    {
        echo </span><span style="color: #dd0000;">'Bu da diğer metod'</span><span style="color: #007700;">;
    }
}
</span><span style="color: #0000bb;">?&gt;</span></span></code></strong></span></strong><!--[endif]-->

<span style="font-size: 10pt; font-family: Arial;">Şimdi şu linki çağıralım; (url nin ikinci bölümü ile comment() metodumuzu çalıştırdığımza dikkat edin)</span>
<code><span style="font-size: 10pt; font-family: Arial;">www.siteadiniz.com/index.php/</span></code><var><strong><span style="font-size: 10pt; font-family: Arial;">blog</span></strong></var><code><span style="font-size: 10pt; font-family: Arial;">/</span></code><samp><strong><span style="font-size: 10pt; font-family: Arial;">comments</span></strong></samp><code><span style="font-size: 10pt; font-family: Arial;">/</span></code>
<span style="font-size: 10pt; font-family: Arial;">Şimdi ise tarayıcınızda “Bu da diğer metod”  yazısını göreceksiniz.
<strong>
Metod Parametresini url İle Geçirmek</strong>

Eğer url ikiden fazla bölüm içeriyorsa, 3 ve sonraki bölümler, ilgili metoda parametre olarak aktarılır.
Örneğin aşağıdaki kodu <em>products.php</em> ismi ile application/controllers/  içine kaydedelim.

</span><strong><code><span style="color: #000000;"><span style="color: #0000bb;">&lt;?php
</span><span style="color: #007700;">class </span><span style="color: #0000bb;">Products </span><span style="color: #007700;">extends </span><span style="color: #0000bb;">Controller </span><span style="color: #007700;">{
    function </span><span style="color: #0000bb;">shoes</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$sandals</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$id</span><span style="color: #007700;">)
    {
        echo </span><span style="color: #0000bb;">$sandals</span><span style="color: #007700;">;
        echo </span><span style="color: #0000bb;">$id</span><span style="color: #007700;">;
    }
}
</span><span style="color: #0000bb;">?&gt;
</span></span></code></strong></pre>
<p><!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} code 	{font-family:"Courier New"; 	mso-ascii-font-family:"Courier New"; 	mso-fareast-font-family:"Times New Roman"; 	mso-hansi-font-family:"Courier New"; 	mso-bidi-font-family:"Courier New";} kbd 	{font-family:"Courier New"; 	mso-ascii-font-family:"Courier New"; 	mso-fareast-font-family:"Times New Roman"; 	mso-hansi-font-family:"Courier New"; 	mso-bidi-font-family:"Courier New";} samp 	{font-family:"Courier New"; 	mso-ascii-font-family:"Courier New"; 	mso-fareast-font-family:"Times New Roman"; 	mso-hansi-font-family:"Courier New"; 	mso-bidi-font-family:"Courier New";} @page Section1 	{size:612.0pt 792.0pt; 	margin:70.85pt 70.85pt 70.85pt 70.85pt; 	mso-header-margin:35.4pt; 	mso-footer-margin:35.4pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --></p>
<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Normal Tablo"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} --> Sonra da aşağıdaki linki çalıştıralım;</p>
<p>www.siteadiniz.com/index.php/products/shoes/<strong>sandals</strong>/<strong>123</strong></p>
<p>Üçüncü ve dördüncü bölümlerdeki bilgiler fonksiyon parametrelerine değer olarak atanır ve bu parametrelere uygun bilgileri sayfaya alır. Yani tarayıcıya &#8220;sandals&#8221; ve &#8220;123&#8243; kelimelerini yazdırır.</p>
<p><strong>Varsayılan Controller Tanımlama</strong></p>
<p>Url bulunamadığında ya da siteye ilk girildiğinde CI ye gitmesi için varsayılan olarak yüklenecek controller tanımlaması yapılabilir.</p>
<p>Default Controller (varsayılan controller) tanımlaması yapmak için application/config/routes.php içindeki aşağıdaki kodla gerekli değişiklik yapılabilir;<br />
<em> $route['default_controller'] = &#8216;Blog&#8217;;</em></p>
<p>Blog, burada varsayılan olarak yüklenecek controller adıdır. Bu ayardan sonra, eğer yukarıdaki örnekte ana index.php dosyanızı herhangi bir url bölümü kullanmadan çalıştırırsanız, “Merhaba Dünya!” yazsını görürsünüz.</p>
<p><strong>Controllerları Alt Klasörlerde Organize Etmek</strong></p>
<p>Bazı durumlarda controller ları alt klasörlere bölmek isteyebilirsiniz. Bunu, <em>application/controllers</em> içinde alt klasörler açarak yapabiliriniz.</p>
<p>Bunu yaptığınız zaman url ’nin ilk bölümünde klasör ismi kullanılmalıdır. Örneğin controller,   “application/controllers/<strong>products</strong>/shoes.php” altında olduğunu varsayarsak url şu şekilde olmalıdır;<br />
www.siteadiniz.com/index.php/<strong>products</strong>/shoes/123</p>
<p>Her bir alt klasör varsayılan controller içerebilir. Alt katagoriye giden bir link bulunamadığında ya da benzer bir durumda varsayılan controller olarak çalışmak üzere ayrı bir varsayılan conroller tanımlanabilir. Bu, application/config/routes.php dosyasından yapılır.</p>
<p><strong>Sınıf Yapılandırıcıları (Class Constructors) </strong></p>
<p>Yapılandırıcılar, sınıftan nesne oluştururken bazı varsayılan değerleri ayarlamak ya da bazı varsayılan işlemleri çalıştırmak için kullanılır. Bildiğiniz gibi yapılandırıcılar, değer döndürmez. Sadece belli varsayılan işleri yapar. Yapılandırıcılar (consructors) hakkında daha fazla bilgi için php5 de nesne tabanlı programlama konusu incelenmelidir.</p>
<p>Cıdeigniter&#8217;da kullanımı şu şekildedir (php5 için);</p>
<pre><strong><code><span style="color: #000000;"><span style="color: #0000bb;">&lt;?php
</span><span style="color: #007700;">class </span><span style="color: #0000bb;">Blog </span><span style="color: #007700;">extends </span><span style="color: #0000bb;">Controller </span><span style="color: #007700;">{
       function </span><span style="color: #0000bb;">__construct</span><span style="color: #007700;">()
       {
            </span><span style="color: #0000bb;">parent</span><span style="color: #007700;">::</span><span style="color: #0000bb;">Controller</span><span style="color: #007700;">();  
       }
}
</span><span style="color: #0000bb;">?&gt;
</span></span></code></strong></pre>
<p>Burada   parent::Controller();  kodunu kullanmak durumundayız çünkü yerel yapılandırıcı, parent controller ‘ı ezeceği için, onu manuel olarak çağırmamız gerekir.</p>
<p>MVC &#8216;nin ve dolayısı ile codeigniter&#8217;in bel kemiği olan controller kavramından genel olarak bu kadar değinmek yeterli olacaktır sanırım. Zaten CI ile uygulama geliştirme sürecimiz çok büyük oranda controller, model ve view dosyaları yazmaktan ibaret olduğu için bu konuyu iyi öğrenmek durumdayız.</p>
<p>Sonraki codeigniter yazılarımda görüşmek üzere, sağlıcakla kalın&#8230;</p>
<p><span style="text-decoration: underline;"><strong>Kaynakça:</strong></span></p>
<p><a href="http://codeigniter.com/user_guide/" target="_blank">CodeIgniter Kullanıcı Klavuzu</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ibonette.com/codeigniter-2-controller/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>CodeIgniter -1 : Başlangıç</title>
		<link>http://www.ibonette.com/codeigniter-1-baslangic/</link>
		<comments>http://www.ibonette.com/codeigniter-1-baslangic/#comments</comments>
		<pubDate>Sat, 13 Dec 2008 09:46:20 +0000</pubDate>
		<dc:creator>ibrahim</dc:creator>
				<category><![CDATA[PROGRAMLAMA]]></category>
		<category><![CDATA[CI]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[codeigniter gereksinimler]]></category>
		<category><![CDATA[codeigniter kurulum]]></category>
		<category><![CDATA[codeigniter uygulama akış şeması]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[php framework]]></category>

		<guid isPermaLink="false">http://www.ibonette.com/?p=46</guid>
		<description><![CDATA[Framework’leri, sürekli olarak kullandığımız bazı işlevlerle ilgili olarak, güvenilirliği test edilmiş sınıflar, fonksiyonlar ve kod parçacıklarının oluşturduğu bir çalışma çatısı olarak tanımlayabiliriz. Örneğin veritabanı bağlantısı ve sorgulama, dosya işlemleri, güvenlik vb amaçlarla kullandığımız kodları her seferinde tekrar tekrar kodlamaktansa bunları sınıflar ve fonksiyonlar halinde bir çatı altına toplarsak framework elde ederiz. Daha sonra her projede bu temel çatı üzerinde geliştirerek gerekli gördüğümüzde framework kütüphanemizdeki kodlarımızı kullanır ve gerekirse kütüphanemize yeni kodlar, sınıflar ekleyebiliriz.]]></description>
			<content:encoded><![CDATA[<p>Web programlama ile ilgilenenler iyi bilirler, son dönemde bir framework furyası aldı başını gidiyor. Bu konuda yüzlerce alternatif arasından seçim yapmak bile başlı başına bir iş&#8230; Bunlardan, basitliği ve kullanım kolaylığı ile dikkat çeken <a href="http://codeigniter.com/" target="_blank">Codeigniter</a> ( kısaca CI olarak bilinir) gerçekten güzel bir framework. Fırsat buldukça CodeIgniter hakkında çeşitli yazılar yazmaya çalışacağım.</p>
<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} @page Section1 	{size:612.0pt 792.0pt; 	margin:70.85pt 70.85pt 70.85pt 70.85pt; 	mso-header-margin:35.4pt; 	mso-footer-margin:35.4pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --><!--[if gte mso 10]> <mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Normal Tablo"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} --> <!--[endif]--></p>
<p><span style="text-decoration: underline;"><strong>Framework Nedir Ve Neden Kullanılır?</strong></span></p>
<p>Framework’leri, sürekli olarak kullandığımız bazı işlevlerle ilgili olarak, güvenilirliği test edilmiş sınıflar, fonksiyonlar ve kod parçacıklarının oluşturduğu bir çalışma çatısı olarak tanımlayabiliriz. Örneğin veritabanı bağlantısı ve sorgulama, dosya işlemleri, güvenlik vb amaçlarla kullandığımız kodları her seferinde tekrar tekrar kodlamaktansa bunları sınıflar ve fonksiyonlar halinde bir çatı altına toplarsak framework elde ederiz. Daha sonra her projede bu temel çatı üzerinde geliştirerek gerekli gördüğümüzde framework kütüphanemizdeki kodlarımızı kullanır ve gerekirse kütüphanemize yeni kodlar, sınıflar ekleyebiliriz.</p>
<p>Özellikle nesne tabanlı programlama yaklaşımının bir standart haline geldiği bugünlerde framework ler giderek bir ihtiyaç haline gelmiştir. Bu sayede programcılar framework kütüphanesinde tanımlı sınıflardan nesneler oluşturarak çok pratik ve hızlı bir şekilde kod geliştirebilmektedir.  Ayrca daha temiz ve güvenli kod yazmayı da sağlar.</p>
<p>.net framework gibi birçok programlama diline hizmet eden frameworkler olduğu gibi CodeIgniter gibi sadece belli bir programlama diline yönelik frameworkler de mevcuttur.  Php diline yönelik CI nin yanında, Zend, cakephp, symfony   gibi frameworkler de mevcut olup, her geçen gün yenileri eklenmektedir. Özellikle php dünyasında çok önemli bir yeri olan Zend firmasına ait  zend framework gelecek vaat etmektedir.</p>
<p>Ancak biz, bunlar arasında öğrenim ve kullanım  kolaylığını ana hedef olarak seçmiş  ve gerçekten bu açıdan  diğerlerine oranla çok önde olan  CodeIgniter &#8216;ı ele alıyoruz.</p>
<p>Herhangi bir php framework ile çalışmaya başlamadan önce php diline ve nesne tabanlı programlamaya hakim olmamız bize büyük kolaylık sağlar. Spesifik olarak “php dilinde nesne tabanlı programlama” konusunu iyi öğrenmek gerekir. Bunlar olmadan da frameworkler ile üretim yapabiliriz ancak sancılı bir süreç yaşarız. Bu ve bundan sonraki yazılarım, temel nesne tabanlı programlamayı ve temel php’yi bilen okuyuculara hitap etmektedir.</p>
<p><span style="text-decoration: underline;"><strong>Gereksinimler ve Kurulum</strong></span></p>
<p><span style="text-decoration: underline;"><em>CodeIgniter </em></span><span style="text-decoration: underline;"><em>kurulacak olan sunucudaki gereksinimler şunlardır;</em></span></p>
<p>1) PHP 4.3.2 ya da daha yeni bir versiyon<br />
2) Desteklenen veritabanları; MySQL (4.1+), MySQLi, MS SQL, Postgre, Oracle, SQLite ve ODBC.</p>
<p><em><span style="text-decoration: underline;">Kurulum:</span></em><br />
CodeIgniter, dört adımda yüklenir;</p>
<p>1) <a href="http://codeigniter.com/" target="_blank">http://codeigniter.com/</a> dan en son sürümü indirerek, Zip dosyasını açın,<br />
2) CI dizin ve dosyalarının sunucuya gönderin,<br />
3) application/config/config.php dosyasını herhangi bir text editörde açarak “base URL” nizi düzeltin.<br />
4) Eğer veritabanı kullanacaksanız application/config/database.php dosyasını açarak veritabanı bilgilerinizi güncelleyin.</p>
<p>Eğer CodeIgniter  dosyalarını gizleyerek güvenliği arttırmak isterseniz system dizininin ismini değiştirebilirsiniz. Bunu yaparsanız index.php dosyanızı açarak $system_folder değişkenine yeni isim bilgisi girilmelidir.</p>
<p><em><span style="text-decoration: underline;">İlk çalıştırma ve bazı ayarlar:</span></em></p>
<p>Tarayıcınızı açarak <em>http://localhost/CIklasorAdi/</em> (sizin url &#8216;niz ne ise onu) yazın. Eğer karşınıza “Welcome to Code Igniter!” mesajı geldi ise yükleme işleminiz başarılı demektir.</p>
<p>CodeIgniter  ile yapılan  projelerin dosyaları system/application dizininde bulunur. Buradaki /config dizini içindeki dosyalardan sitemiz ile ilgili temel bazı ayarları yaparız.</p>
<p><span style="text-decoration: underline;"><strong>MVC (Model-View-Controller)</strong></span></p>
<p>CodeIgniter  ve diğer çoğu php framework, MVC yaklaşımı ile tasarlanmıştır. Model-view-controller, yazılım mühendisliği&#8217;nde kullanılan bir &#8220;mimari desen&#8221;dir. Uygulamalarda veri ve gösterimin soyutlanması esasına dayanır. Böylelikle veriler (model) ve kullanıcı arayüzü (view) birbirini etkilemeden düzenlenebilir. Model-view-controller, bunu controller adı verilen ara bileşenle, veri gösterimi ve kullanıcı etkileşiminden, veri erişimi ve iş mantığını çıkarma suretiyle çözmektedir.</p>
<p><em><span style="text-decoration: underline;">Model: </span></em>Veri yapısını ifade eder. Model class ları veritabanından veri çekme, ekleme, düzeltme işlerinde kullanılır.<br />
<em><span style="text-decoration: underline;">View: </span></em>&#8220;Model&#8221;i etkileşime açık bir forma sokar; tipik olarak bir kullanıcı arayüz elemanına dönüştürür. Bir &#8220;model&#8221; için değişik maksatlı birçok &#8220;view&#8221; bulunabilir. View normalde bir web sayfası olabildiği gibi CI de bu, header, footer gibi sayfa parçacıkları da olabilir. Ayrıca rss sayfası ya da diğer tür web sayfaları olabilir.<br />
<em><span style="text-decoration: underline;">Controller:</span></em> Kullanıcı eylemlerine karşılık gelen işleri yürütür ve ayrıca model üzerindeki değişiklikler işletebilir. Controller, Model ile View arasında ya da diğer http istekleri ve sayfa üretimi ile ilgili isteklerin arabuluculuğunu yapar.<br />
Özetle; Controller kullanıcıdan istekleri &#8221; View &#8221; üzerinden alır, Model de işler, View işlenen verileri kullanır.</p>
<p><strong><span style="text-decoration: underline;">Uygulama Akış Şeması</span></strong><br />
Aşağıdaki grafik sistemden verinin nasıl aktığını gösteriyor;</p>
<div id="attachment_47" class="wp-caption alignnone" style="width: 510px"><a href="http://www.ibonette.com/wp-content/uploads/2008/12/ci_uygulama_akis_semasi.jpg"><img class="size-full wp-image-47" title="ci_uygulama_akis_semasi" src="http://www.ibonette.com/wp-content/uploads/2008/12/ci_uygulama_akis_semasi.jpg" alt="CI uygulama akış şeması" width="500" height="147" /></a><p class="wp-caption-text">CodeIgniter  uygulama akış şeması</p></div>
<p>Bu şemayı kısaca özetlemek gerekirse, tipik bir CodeIgniter  uygulaması aşağıdaki adımları izler;</p>
<p>1.    Index.php, ön controller (front controller) olarak çalışır. CI için gerekli kaynakları başlatır.<br />
2.    Routing: Router, http isteklerini, ne yapılabileceğini belirlemek amacıyla inceler.<br />
3.    Caching: Eğer cache dosyası mevcut ise, normal sistem işlemlerini yürütmeden direk olarak internet tarayıcısına yollar.<br />
4.    Security: Uygulama controllerı yüklenmeden önce, http istekleri ve kullanıcı verileri güvenlik için filtrelenir.<br />
5.    Controller, model’leri, temel kütüphaneleri, helper’ları, plugin’leri ve özel istekler için gerekli diğer tüm kaynakları yükler.<br />
6.    Sonuç view, internet tarayıcısına görüntülenmek üzere yollanır. Eğer caching aktif ise view, daha sonraki isteklerde görüntülenmek üzere, cach ‘e (önbelleğe) kaydedilir</p>
<p>Başlangıç olarak şimdilik bunlar yeterli olacaktır sanırım. Takip eden yazılarımda konuya biraz daha ayrıntılı girerek, basit bir &#8220;merhaba dünya&#8221; uygulaması yapacağız.</p>
<p>Sağlıcakla kalın&#8230;</p>
<p><span style="text-decoration: underline;"><strong>Ekleme:</strong></span> Yazının ikinci bölümü için <a href="http://www.ibonette.com/codeigniter-2-controller/" target="_self">buradan</a> devam edebilirsiniz.</p>
<p><span style="text-decoration: underline;"><strong>Kaynakça:</strong></span></p>
<p><a href="http://codeigniter.com/user_guide/" target="_blank">CodeIgniter Kullanıcı Klavuzu</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ibonette.com/codeigniter-1-baslangic/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
