--- title: "PHP ile Tek Dosyalı Projeler ve Siteler Üretmek" slug: tek-dosyali-projeler-siteler-uretmek date: 2008-02-18 description: "PHP kullanarak tüm içeriği ve işlevselliği tek bir dosyada barındıran web siteleri veya modüller nasıl oluşturulur? GET parametreleri, çıktı tamponlama (output buffering) ve heredoc sözdizimi kullanımı." url: http://mfyz.com/tr/tek-dosyali-projeler-siteler-uretmek/ tags: ["PHP", "web geliştirme", "programlama", "tek dosya proje", "site yapımı", "eğitim", "kodlama teknikleri", "output buffering"] category: PHP migration: {"wpId":135,"wpPostDate":"2008-02-18T21:43:41.000Z"} lang: tr --- Bazen yazdığınız/yazacağınız modül/sayfa/proje çok işlem ve bölüm içermeyebilir. Farklı içeriğe sahip kısa ama çok metin olabilir elinizde. Ya da modülünüzde işlemler kısadır. Ya da tamamen ilginçlik olsun diye tek dosyada birçok işi yaptırmak isteyebilirsiniz. Mesela sadece bir dizini listeleyip, dosyalar üzerinde ufak işlemler yaptıran bir betik yazıyor olabilirsiniz. Ya da bir reklam kampanyası için reklam sayfasının yanında ufak bir bilgi (hakkında) sayfası ve iletişim formu olan ufak bir site yapıyor olabilirsiniz. Ufak işlemler içeren sayfalara bir sürü dosya oluşturup dosya kalabalığı yaptırmaktansa tek dosyada toplayabilirsiniz. Bu dökümanda ufak bir örnekle tek dosyadan oluşan bir site/sayfa yapacağım. #### Başlıyoruz Önce basit html yapınızı modüler yapıdaki gibi hazırlayalım. ```html Tek dosyadan oluşan sayfam

Fatih'in sitesi


içerik kısmı

Mehmet Fatih YILDIZ 2008 ``` gördüğünüz gibi oldukça basit. Site başlığı, ufak bir menü iki HR arasında sayfa içeriği ve sayfa sonu notu. Sayfa içeriği kısmına modüler yapıdaki gibi içerğimizi basacağız. Şimdi 4-5 tane sayfamız var bunların içeriklerini gömeceğiz dosyamızın içine. Aslında hepsi basit bir kontrol mekanizması ile hallolacak. ```php Hakkımda Ben buyum şunları bunları yaparım falan feşmekan.

Şurada okudum, burada okuyorum büyüyünce X olacağım

siteyi şöyle yaptım böyle ettim. HTML_SON; } else if( $bolum == 'projeler' ){ echo <<Projelerim PHP ile şu projelerin altyapısıyla uğraşıyorum. Hede hödö HTML_SON; } else if( $bolum == 'iletisim' ){ echo <<İletişim İletişim bilgilerim : asd@asd.com

Ad :
E-posta :
Mesaj :
HTML_SON; } else { // anasayfa echo << ... ``` Yukarıda gördüğünüz gibi sayfa içeriklerini kontrole göre ekrana bastık. Burada dikkatinizi 2 şey çekmiştir. ob_start, ob_get_contents ve ob_end_clean fonksiyonlarını ekrana basılan şeyleri $icerik değişkenine aktarabilmek için yaptım. ```sh echo <<

... ``` $icerik değişkenini basıyoruz. Böylece tek sayfada içerik basabiliyoruz.İşin bir de işlem kısmı var. Yani tek dosyada toplamaya çalıştığınız site/sayfa sadece içerikten oluşmak zorunda değil. Aynı zamanda php'ye bazı işler yaptırmanız gerekebilir. Hatta modül için bu tek dosya mantığını düşünürseniz işlem modüllerinde içerik değil sadece işlemler vardır. Aynı mantıkla bunu da yapabilirsiniz. Örnekte gördüğünüz gibi iletişim bölümünde bir iletişim formu var. Bunu işleyen kısmı buraya gömmek için sayfa içeriklerini seçtirmeden önce işlemler için de bir kontrol bloüu koyuyoruz. ```php Hakkımda Ben buyum şunları bunları yaparım falan feşmekan.

Şurada okudum, burada okuyorum büyüyünce X olacağım

siteyi şöyle yaptım böyle ettim. HTML_SON; }else if( $bolum == 'projeler' ){ echo <<Projelerim PHP ile şu projelerin altyapısıyla uğraşıyorum. Hede hödö HTML_SON; }else if( $bolum == 'iletisim' ){ echo <<İletişim İletişim bilgilerim : asd@asd.com

Ad :
E-posta :
Mesaj :
HTML_SON; }else{ // anasayfa echo << Tek dosyadan oluşan sayfam

Fatih'in sitesi



Mehmet Fatih YILDIZ 2008 ``` #### Modüler yapıya ne oldu? Daha önce /bir-sitenin-kod-duzeni-nasil-olmali/ dökümanında bahsettiğim bir modüler yapı vardı. Her türlü projenizde bu mantığı kullanmanızı önermiştim. Bu dökümanın amacı ufak projeler için zaten. Farkındaysanız örnekte verdiğim kodlar müthiş kısa kodlar. Çok basit bir site bile yapsanız bu kodlar uzayıp gidecektir. Bir de şunu unutmayın : eğer kodlarınız (yani bölümler veya işlemlerdeki) genellikle **20-30 satırı geçen kodlar** ise bu yöntem hata yakalamanızı, sorun yaşadığınızda çözme sürenizi, çalışabilirliğinizi ve kodun temizliğini kötüleştirecek/zorlaştıracaktır. Onun için çok paranoyak veya ihtiyaç duymadığnız sürece bu mantığı kullanmayın. Modüler yapıyla ilgili yazdığım döküman çok daha faydalı olacaktır.