Kadir Özdemir

  • Ben Kimim
  • PHP
  • Sencha Touch
  • Home/
  • Zend Framework /
  • Zend Framework türkce tutorial 1

Zend Framework türkce tutorial 1

Skorp 03.04.2009 2 Comments

serimizin ilk yazisinda öncelikle calisma ortamimizi ayarliyacagiz,
ardindan baslamak icin gerekli olan dosyalari ve ayarlari yapacagiz.
Ben bu kütüphaneye kitapcik adi veriyorum ondan kullanacagim domain ismi kendi bilgisayarimda kitapcik.dev olacak.
Öncelikle bunu ayarlamak icin secmis oldugunuz domain ismini Linux da /etc/hosts ve
Windows da c:\windows\system32\drivers\etc\hosts dosyasi icine yazmamiz gerekiyor.

127.0.0.1	kitapcik.dev 

ardindan vhosts dosyanizi bulup icine bir vhosts eklemeniz grekiyor.
xampp da bu dosya C:\xampp\apache\conf\extra\httpd-vhosts.conf

Vhosts u eklemeden önce tüm dosyalarimizin bulunacagi klasörün yerini tespit edelim.

Ben suan bu makaleyi yazarken Windows da calistigim icin örnegide ona göre verecegim, linuxcular kendilerine göre ayarlasinlar.
benim tüm dosyalarim: c:\xampp\htdocs\kitapcik\ klasörü altinda olacak.

Kisaca dizin yapimiza bakalim.
Structure
dizin yapisi sizin bilgisayarinizdada aynen bu sekilde olmasi lazim.

simdi vhost umuzu ayarliya biliriz.

örnek:

<virtualhost *:80>
    ServerName kitapcik.dev
    DocumentRoot "c:\xampp\htdocs\kitapcik\html"
    ErrorLog logs/kitapcik-error_log
    CustomLog logs/kitapcik-access_log common
</virtualhost>

bunu vhosts dosyasi icine ekleyiniz ve ardindan apache yi yeniden baslatiniz.

simdi html klasörü icinde bir index.html olusturup icine herhangi birsey yazin

mesela:
bu bir test sayfasidir

ve ardindan herhangi bir Browserde kitapcik.dev ziyaret ettinizmi bu yaziyi görüyorsaniz herseyi simdiye kadar dogru yaptiniz demektir.

simdi ZF in sitesinden Zend Framework x.x.x Full.zip i indirin biryere kaydedin icinden isimizi görecek olan dosyalari alacagiz sadece.
library klasöründen Zend klasörünü tüm icerigiyle birlikde lib klasörümüzün icine kopyaliyalim.
extras/library klasörü icinden ZendX klasörünü da lib klasörü icine kopyalayalim.

Tüm uygulamada resimler, css dosyalari, ve js dosyalari disinda, disaridan erisile bilinicek tek dosyamiz index.php olacak.
Bu ne manaya geliyor, sitemizin her sayfasina giden yol index.php den geciyor onun icin bu dosyamizin adi bootstrap dosyasi.
Bir MVC (Model-View-Controller) uygulamasinda, (burda oldugu gibi) disaridan erisile bilinen tek dosya Bootstrap dosyasi olmalidir.
bu dosya kisaca Front-Controller den bir instance (örnek) alip onun dispatch() metodunu calistiriyor.

Sitemize giden tüm isteklerin (request) index.php den yönlenmesi icinde yapmamiz gerekenler var.

öncelikle php de mod_rewrite modulu aktif halde olmasi lazim.
aktife degilse xampp kullanicilari mod_rewrite i buradan aktif hale getire bilirler.
c:/xampp/apache/conf/httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so
satirin basindaki ; kaldirin ve kaydedin ardindan apache yi yeniden baslatmaniz gerekiyor.

evet simdi html klasörü icine , tüm istekleri index.php ye yönlendiricek bir .htaccess dosyasi ekliyelim.
dosyanin icerigi bu sekilde olmalidir.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ /index.php [NC,L]

ardindan
application klasörü icine bir bootstrap.php adinda bir dosya olusturalim.

evet artik browserde ne yazarsak index.php dosyamiz gelecek.
Hmmmmm bizim henüz index.php dosyamiz yokki diyeceksiniz haklisiniz, baslarda olusturdugumuz index.html dosyasini silip yerine bir index.php dosyasi olusturalim.
icine bu satirlari ekliyelim ve kaydedelim.

< ?php
require '../application/bootstrap.php'; 
&#91;/php&#93;
index.php nin icerigi sadece bukadar.
ardindan application/bootstrap.php dosyamizi inceliyelim.



&#91;php&#93;
< ?php
defined('APPLICATION_PATH') or define('APPLICATION_PATH', realpath(dirname(__FILE__)));
defined('APPLICATION_STATE') or define('APPLICATION_STATE', 'development');
defined('LIB_PATH') or define('LIB_PATH',realpath(dirname(APPLICATION_PATH)."../lib"));
// lib klasörümüzü include pathe eklememiz gerekiyorki gerekli Zend siniflari yüklenirken sorun yasamiyalim.
set_include_path(LIB_PATH. PATH_SEPARATOR .get_include_path());

//tüm Zend siniflarinin otomatikmen yüklenmesi icin Autoloader i aktif hale getiriyoruz, bunu yapmassaniz heryerde require_once yada include kullanmaniz gerekecek
require_once('Zend/Loader.php');
Zend_Loader::registerAutoload();

require_once LIB_PATH.'/plugins/Initializer.php';

// front controller objesini olusturalim 
$front = Zend_Controller_Front::getInstance();
//ayar Pluginini kayit edelim 
$front -> registerPlugin(new Kitapcik_Plugin_Initializer(APPLICATION_STATE,APPLICATION_PATH));

$front -> throwExceptions(false);

$front -> dispatch();

lib/plugins klasörüne bir initialize.php olusturalim, ekteki dosyadan gerekli icerigi oraya ekliyelim.
initialize.php de yapilan tüm ayarlara gerekli aciklamalar dosya icinde yorum (comment) olarak yapildi.
Initialize.php bir Plugindir daha genis bilgi icin tikla

Simdi application klasörü icinde settings.ini diye bir dosya olusturup bunlari icine kopyaliyalim.

[production]
db.adapter = "pdo_mysql"
db.params.host = "localhost"
db.params.dbname= "kitapcik"
db.params.username = "root"
db.params.password = ""

host, dbname, username, password alanlarini lütfen kendi db bilgilerinizle degistirin.

action lardan ve controllerden konusmadan önce adres yapisina bakalim ZF in

domainden sonra ilk parca controller ikinci parca action olur.

modular bir yapiya sahipsek ilk parca module, ikinci controller ve ücüncü action olur.

örnek:
skorp.eu/tutorial/zfbaslangic

tutorial controllerimiz oluyor
zfbaslangic ise tutorial controllerinde bulunan action umuz.

herhangi bir controller veya action verilmemisse Index varsayilir ve o controller action calistirilir.

Zend_Controller in dispatcher’i controller adinda, standard controller klasöründe bir Sinif arar. sinif adi su sekilde olmalidir
Controller mesela TutorialController.php dikkat edilmesi gereken Tutorial in T si büyük yazilmali.

Hemen hemen ayni sekilde Action belirlenir: Action da dikkat edilmesi gereken Action in tümü kücük harflerden olusmasi lazim, sonuna eklenen Action kisminin A harfi büyük
örnek: public function zfbaslangicAction() {}

Ana sayfamizin controllerini ve Action unu yazalim bakalim.
application/controllers/IndexController.php

class IndexController extends Zend_Controller_Action 
{

    public function indexAction() 
    {
    	$this->_redirect('/index/liste');
    }
     public function listeAction() {
	$this->view->header ="Kitapcik liste";

     }
}

Standard olarak Viewrenderer (action-helper) acik olur.
Yani Action cagrildiginda o Action adinda bir View script varmi diye kontrol edilir yoksa hata gösterilir varsa action un icerigi.

Simdi Views/scripts/ klasörü icine bir index (Controller ismi) klasorü olusturlaim icine bir liste.phtml (action ismi) kayit edelim
liste.phtml icerigi su sekilde ola bilir suan.

< ?= $this->headTitle('Kitapcik liste'); ?>

Slm dünya

Layouts klasöründe layout.phtml adinda dosya olusturlaim icine bunlari kayit edelim.

< ?= $this->doctype(); ?>
<html>

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		< ?php 
		echo $this->headTitle();
	    echo $this->headScript();
	    echo $this->headStyle();
		echo $this->headLink()->appendStylesheet('/css/main.css') 
	    ?>
	</head>
	
	<body>
		<center>
		<table cellpadding="0" cellspacing="0" class="maintable">
				<tr>
					<td colspan="2"> <h2>< ?php echo $this->escape($this->header); ?></h2></td>
				</tr>	
				<tr>
						<td class="navigation"> 
						<ul>
							<li>Home</li>
							<li>ekle</li>
							<li>iletisim</li>
						</ul>
						</td>
						<td class="main">< ?= $this->layout()->content ?></td>
				</tr>
		</table>
		</center>
	</body>

</html>

$this-> ile basliyanlar birer View Helper dir.
Sürekli View de lazim olan fonksiyonlari view Helper olarak olusturursaniz, Tüm Viewlarda kullana bilrisiniz.
ZF ile gelen birsürü View Helper var, View Helperler hakkinda daha genis bilgi icin tikla

Örnek olarak Headtitle ViewHelperine bakalim.
Her sayfada degisik title kullanmak icin bunu kullana bilirsiniz.
layout.phtml ve liste.phtml de ki kullanimina bakiniz.

Kisaca Layout lara da deyinelim, layout u sayfanin plani olarak düsünün, sayfanin görünümü, yapisi, vs. bu layout dosyasinda ayarlayin, birtek sürekli degisen icerigi layout a ekliyecegiz onu bu satirla yapa
biliriz.

< ?= $this->layout()->content ?>

view den gelen veri bu bölüme eklenecektir.

simdi Browseriizde kitapcik.dev yazalim bakalim ne görecegiz.

asagidaki resme benzer birsey görüyorsaniz herseyi dogru yaptiniz demektir.
Bootstrap
Ilk yazimizin burda sonuna geldik.

Soru ve hatalari burada veya Zend Framework türkce Forum dan yaza bilirsiniz.

Kodlari DOWNLOAD: ZF i kendiniz indirip makalede yazdigi gibi lib klasörüne yüklemeniz gerekiyor.

Skorp
2009-04-03
Tags:
PHP Zend Framework zf-proje
Share story:
← PreviousZend Framework örnek Proje adim adim
Next →Karin agrisi – kör bagarsak

Written by Skorp

View all articles by Skorp

Website: http://www.skorp.eu

Related Articles

  • Zend ViewHelper ve birden cok Metot barindirma

  • Zend Framework örnek Proje adim adim

  • Zend Framework türkce forum Domainleri

  • Zend Framework türkce Forum

  • Zend Framework dispatch islemi

2 Comments

  1. Zend Framework örnek Proje adim adim | Kadir Özdemir
    Nisan 03, 2009 at 02:30 pm

    […] – Sistemi hazirliyalim (Vhosts) , Bootstrap dosyasi […]

  2. veysel sahin
    Ocak 09, 2013 at 03:21 pm

    tesekkurler.ellerinize saglık

Leave a Comment Cancel Reply

Your email address will not be published. Required fields are marked *

Social networks

Etiket Bulutu

Android Bilgisayar & Internet C# Cms css diger Kodlar featured Genel Java Javascript Linux Mobile PHP Silverstripe typo3 Veritabani Windows Zend Framework

Links

  • H E R K O N U
  • Hüseyin Koyun
  • Urban23k

Son Yorumlar

  • Primary Key – Unique ve Index nedir? için Onur
  • Centos de apache, php ve mysql kurulumu için sezer fidancı
  • React Native – Kurulum için React Native | Kadir Özdemir
  • React Native için React Native – Kurulum | Kadir Özdemir
  • Ben Kimim için serkan

Twitter

Follow @skorp54
There is an error in twitter widget, please make sure that you have set up the Twitter API settings
  • Ben Kimim
  • PHP
  • Sencha Touch

Arsivler

Kategoriler

Copyright © 2014 webberz.at