24 Haziran 2016 Cuma

Php'de Başka Bir Dosyayı İthal Etme

Başka Bir Dosyayı İthal Etme
PHP dilinde kod ithalini sağlayan dört fonsiyon vardır. Bu
fonksiyonlarla baĢka dosyalarda bulunan kodları o an
çalıĢan dosyaya ekleyebiliriz. Bu fonksiyonlara bir
bakalım;
include() fonsiyonu
Adı verilen dosyayı kodun içine orada imiĢ gibi ekler ve
çalıĢtırır. Dosya yoksa sadece bir uyarı verir ve kodun
geri kalanını çalıĢtırmaya devam eder. Include()
fonskyionu geriye bir değer dönderebilir.
require() fonksiyonu
require fonksiyonu iĢlev olarak include() ile temelde
aynıdır yani adı verilen dosyayı kodun içine orada imiĢ
gibi ekler ve çalıĢtırır. Include() ile olan farkı ise adı
verilen bu dosyanın bulunanaması durumunda görülür.
Require dosyayı bulamazsa programı ―öldürür‖. Require
(kelime anlamı gerekli demektir) dosyanın olmasını ―ġart
KoĢar‖ dosya yoksa kod çalıĢtırılmaz ta ki dosya yerine
konulana kadar. Require () geriye değer döndürmez.
include_Once ve require_Once
Bir liste oluĢturur ve dahil edilen dosyaların adını bu
listede tutarak her dosyanın sadece bir kere dahil
edilmesine izin verirler. AĢağıda ki örneği inceleyelim
<?php
print 'Birinci dosya foo\n';
include 'iki.php';
print 'Birinci dosya bitti\n';
?>
Buda ikinci dosyanın kodu:
<?php
print 'Kontrol ikinci dosyada \n';
?>
<?php
print 'Birinci dosya foo\n';
require 'iki.php';
print 'Birinci dosya bitti\n';
?>
<?php
print 'Birinci dosya foo\n';
include_once 'iki.php';
print 'Birinci dosya bitti\n';
?>
<?php
print 'Birinci dosya foo\n';
require_once 'iki.php';
print 'Birinci dosya bitti\n';
?>
Inclue ve Require kullanırken bu komutların iĢletim
sistemine göre değiĢik davrandıklarını unutmamak
gerekir. Çünkü Unix türevi iĢletim sistemleri (Linux,
Bsd,Sun solaris) Büyük-küçük harf ayrımı olan
sitemlerdir. Windows gibi davranmazlar. Örneğin
<?php
include 'dosya.php';
include 'Dosya.php';
include 'DoSya.php';
include 'dosYa.php';
?>
Yukardaki kod Windows iĢletim sisteminde adı geçen 4
dosyayıda aynı dosya olarak ele alır çünkü harf ayrımı
yoktur. Oysa Linux bir server üstünde ise bu 4 dosyada
ayrı dosyalar olarak aranacak ve bulunamazsa hata
verielcektir. Bu bakımdan altın kural dosya isimlerini her
zaman küçük harf olarak kullanmaktır.
Bazen include için parametre olarak döngü değerleride
kullanılabilir. Örneğin aĢağıdaki dosyada 1 den 99‘ a
kadar bir döngü ile dosyalar include () ile eklenecektir.
<?php
for ( $i = 1 ; $i <= 99 ; ++$i) {
include ("beniekle" . $i . ".x");
?>
include() ve türevlerindeki güvenlik açığı
include kullanırken dosya uzantılarına dikkat etmek
gerekir. Örneğin include edilecek dosya adını adres
satırından parametre olarak geçirdiğimizi farzedelim.
Dosya uzantısı da ―txt‖ olarak verilmiĢ olsun. Bu
durumda örneğin ―ekle.php?dosyaadi=beniekle.txt‖
değeri ile iĢlem yaptığımızı farzedelim. Dikkatli bir
kullanıcı adres satırına o dosya adını yazacak olursa txt
dosyanın içeriğini görür. Helede bu dosayada parola vs
bilgiler varsa tehlike çok daha büyük olabilir.
include() ile Kodun Yeniden Kullanımı
Mysql ile ilgili fonksionlar daha sonra görülecektir ancak
bu arada sadece mantığın anlaĢılması açısında bir örnek
vermekte gerek var. Bir okul programı düĢünelim.
Öğretmenler kaydedilir, listelenir, silinir. Keza öğrenciler,
dersler, okul bilgileri, notlar, devamsızlıklar içinde aynı
iĢlemler yaplıacaktır. Bu iĢlemler için veritabanına eriĢip
iĢlem yapılacak yüzlerce ayrı programcık gereklidir. Bu
kod parçalarının her birinde en az bir defa mecburen
Mysql‘e bağlanmak, daha sonra veritabanını seçmek için
gerekli kodlarda yazılmalıdır. Ġnclude olmadan tek çare
bu kodları gerekli her yerde tek tek yazmaktır. include()
kullanılır ise bu kod bir kere yazılır ve her yerde çağrılır.
ġimdi Ģunu diyebilirsiniz bu sonuçta iĢletilen kod satırını
düĢürmez. Bu konuda haklısınız evet include sonuçta
kodu orda imiĢ gibi alıp ilgili yere ekler. Ancak düĢünkü
Ģifre değiĢti bu durumda ne olacak ? include kullanan kiĢi
sadece ilgili dosyayı açıp değiĢtirecek ve tüm değiĢikliği
bitirecek, kodu here yere giren kiĢi ise tüm kodları
dolaĢıp değiĢiklikleri elle yapacak daha sonra acaba
unutulan bir yer varmı diye birde kontrol edecektir. Oysa
include ile sadece bir yerde bağlantı yeniden kuruluyor
ise iĢlem bitmiĢ demektir.
HEREDOC Nedir
Heredoc PHP içinde çok uzun metinleri zahmetsizce
yazmaya yarayan bir yetenektir. Heredoc ile uzun
metinler oluĢturulabilir, kendi metin sonu etiketimizi
oluĢturabiliriz. ġu kodu inceleyelim;
<?php
$metin = <<<son
Burada biraz PHP içinde metin örneği var.
Bu alanda tamamen özgürüz
bu alanda ―çift tırnak‖ yada ‗tek tırnak2 kullanmaktada
özgürüz
Artı $degiskenler gibi kullanımda cabası
Bu değiĢkenler iĢlem sırasında içerdikleri değeri
alacaklardır,
son kelimesini istediğiniz yere yazabilirsiniz. ġu anda
sonladırma etiketi o
ancak aĢağıdaki gibi değil:
son;
?>

Hiç yorum yok:

Yorum Gönder