Birden Fazla PHP Dosyası ile Çalışmak
Merhabalar, bu makalemde sizlere birden fazla PHP dosyası ile çalışma konusunda bilgiler vereceğim. PHP makalelerinin en başında yaparak öğrenme ve öğretme prensibini benimsediğimi belirtmiştim. Lakin yazdığım makalelerin biraz kuru kaldığını düşünüyorum. İşlenen konulardaki örneklerin güncel bir web sitesi örneği üzerinden yapılmasının, amacına daha uygun olacağından, makaleleri güncel bir model üzerinden anlatmaya karar verdim. Bu yüzden önümüzdeki bir kaç makalede, güncel bir web sitesi alt yapısı nasıl kurulur bunu anlatacağım. İlk adım olarak da birden fazla PHP dosyası ile nasıl çalışılır bunu anlatacağım ki devam eden makalelerde anlatılacak olan yöntemler konusunda yabancılık çekmeyin.
Programcılıkta, birden fazla kaynak kodu dosyası ile çalışmanın en temel gereği, yazdığınız programların tertip ve düzeni ile ilgilidir. Özellikle işe yarayan programlar, devamlı olarak bakım onarım gerektirirler. Bu yüzden yazılanların tekrar geri okunabilmesi, gerekir. Bunu sağlamanın en iyi yollarından bir tanesi, bir bir ile alakalı fonksiyonları veya kod bloklarını belirli dosyalar altında gruplara ayırmak ve bunları bir arada tutmaktır. Böylece programın güncellemek istediğiniz kısmına odaklandığınız zaman diğer bölümleri ilgilendiren kodlar sizin önünüze çıkmayacak, kafanız elinizdeki programcılık problemini çözmek için daha berrak olacaktır.
Bir web sitesi PHP ile yazılmış bir sistemi çalıştırmak için ayarlandığında (aksi belirtilmemişse(ki bu çok sık görebileceğiniz bir şey değildir)) ilk yaptığı şey web sitesi için ayrılmış dizindeki index.php dosyasını çalıştırmaktır. Bundan sonra eklenecek olan PHP dosyalarını belirlemek, programcının görevidir.
PHP dosyalarını bir birine eklemek için, PHP dilinde 4 ayrı bildirme şekli vardır. Bunlar include(), require(), include_once(), require_once() bildirimleridir. Genel olarak hepsi aynı işlevi yerine getirse de, aralarındaki farkın iyi binmesi gereklidir. Bu dört bildirimin kullanım şekli aynıdır. Parantez içine eklenecek dosya ismi yazılır. Örneğin include(‘db.php’); gibi.
1- include(), temel ekleme bildirimi. Eklenmesi bildirilen dosya bulunamaz ise, hata verir ancak kod çalışmaya devam eder.
2- require(), include bildiriminden farklı olarak require bildiriminde eklenmesi istenen dosya bulunamaz ise, kod hata verir ve çalışmayı durdurur.
3- include_once(), normalinden farklı olarak eklenmesi istenen dosyayı sadece bir kere ekletir, dosya bulunamaz ise kod hata verir ancak çalışmaya devam eder.
4- require_once(), normalinden farklı olarak eklenmesi istenen dosyayı sadece bir kere ekletir, dosya bulunamaz ise kod hata verir ve çalışmayı durdurur.
include_once() ve require_once(), içinde fonksiyon veya class (sınıf) tanımı yapılmış dosyaları eklemek için kullanılır, çünkü PHP de her fonksiyon veya class bir sefer deklare edilir, aynı fonksiyon veya class tekrar deklare edilmeye kalkılırsa kod hata verir ve çalışma durdurulur.
Bağlarsak, normal dosyalarımız include(), olmassa olmaz dosyalarımızı da require() ile çağırıyoruz, eğer bu dosyalarımız fonksiyon veya sınıf içeriyorsa o zaman _once() türevlerini kullanıyoruz.
include ederken kesin yolu kullanmak
PHP de dosyaları birbirine bağlarken yapılan en büyük hatalardan biri, eklenecek dosyaları absolute path (kesin yol) kullanmak yerine, relative path (konuma göre) kullanarak eklemektir eklemektir. Konuma göre dosya eklemek, yapılan her çağrıda PHP nin kodların bulunduğu dizin yapısını tekrardan çözmesine neden olur buda, performans yönünden negatif etkisi olan bir yöntemdir.
<?php
include_once('db.php'); // veri tabanı fonksiyonları
include('ana_template.php'); // template dosyası
?>Yukarıdaki örnek geçerli olsa da, performans açısından negatif etkisi vardır, doğru kullanım
Yukarıdaki kodda __FILE__ adlı PHP Magic Constant (Sihirli Statik) tanımını görüyorsunuz. PHP de buna benzer 10 kadar Magic Constant bulunmaktadır. __FILE__ içinde olduğunuz dosyanın tam olarak dizinini ve adını size bildiren bir Magic Constant tanımıdır. dirname(), verdiğiniz yolun üst dizinini size geri döndüren PHP fonksiyonudur. Özetle bu şekilde çalıştığımız mevcut dosyanın bulunduğu dizini öğrenip, bu dizini ekleyeceğimiz PHP dosyasının adının önüne ekliyerek kesin yolu oluşturup, ekleme işlemine böyle başlıyoruz.
Ancak yukarıda verdiğimiz örnekte gördüğünüz gibi, her ekleme işlemi öncesinde devamlı olarak dirname() fonksiyonunu çalıştırmak sistemden gereksiz bir cpu gücü alacağından bu işi bir sefer yapıp, her zaman kullanacağımız bir yerde saklamak daha iyi olacaktır, elde edeceğimiz veri bir sefer belirlenip daha sonra hiç değiştirmeden kullanacağımız için constant olarak saklanması idealdir.
PHP dili içinde constant (sabit) tanımlamak için define fonksiyonunu kullanıyoruz. Sabit’ler tanımlanırken isimlendirilirler, statik isimleri BÜYÜK HARF olmalıdır, yine çağırılırken BÜYÜK HARF kullanılarak çağrılır.
Tüm detayı toplarsak, absolute path (kesin yol) kullanarak dosya ekleme için en uygun yol
Şeklindeki kod olacaktır, ancak burda küçük bir eksiklik daha var, malumunuz olduğu gibi, php kodları hem unix hemde windows ta çalışabilmektedir ve ne yazık ki bu iki işletim sisteminde dizin ayracı bir birinden farklıdır. PHP, çalışma esnasında bu konularda sorun çıkarmasa da, bir işletim sistemi için kullanılan dizin ayracını sabit olarak kullanmak, özellikle debug işlemini başka bir işletim sisteminde yaptığınız zaman soruna yol açmakta, bu yüzden kullanacağımız dizin ayraçlarını her iki sistemede uyumlu hale getiren bir model uzun vadede başımızı daha az ağrıtacaktır. PHP içinde kullanılan dizin ayracını belirten DIRECTORY_SEPERATOR sabiti tanımlı olsa da, adı uzun olduğu için her seferinde bu sabiti kullanmak pek pratik olmadığından bu iş için kendi daha kısa sabitimizi oluşturacağız.
Böylelikle include işlemleri için kullanılacak en pratik yöntemlerden birine kavuşmuş oluyoruz.
Kategori: Php




Yorumlar (0)
Geri izleme adresi | Yorum RSS Beslemesi
There are no comments yet. Why not be the first to speak your mind.