PHPde fonksiyon kullanmak ve yazmak
Fonksiyon, tekrar eden işlemlerde kullanabileceğiniz bir yapıdır. Tekrar edecek kodun her işlem için yeniden yazılması yerine bir defa fonksiyon olarak yazılıp her yerde kullanılabilir. PHP'de fonksiyonlar; veritabanı okuma-yazma, form kontrolleri, metin işlemleri ve benzeri işlemlerde oluşturulup, kullanılabilirler; lakin PHP ile birlikte gelen pekçok fonksiyon ve eklentilerle(extension) kullanılabilecek çok sayıda fonksiyon ve destek vardır
Fonksiyonları Çağırmak
Aşağıdaki satır en basit fonksiyon çağrısıdır;
Bu kullanım, çağrılacak fonksiyonun parametre sayısına göre değişebilir;
Fonksiyon tanımlamak, Temel Fonksiyon Yapısı ve Optional Parametreler
Bir fonksiyonun yapısı ve kullanımı genel olarak aşağıdaki gibidir;
İpucu: PHP'de fonksiyonlar parametre olarak değişken alabilmenin yanısıra, dizi değişkeni ve nesne gibi tipleri de kullanabilmektedir.
Önceki fonksiyonumuzu öntanımlı değeri olan parametre kullanarak yeniden şekillendirelim;
function merhabaDunya($kimDemis,$not="not bırakmamış")
{
echo "$kim merhaba dünya diyor ve $not";
}
merhabaDunya("baturay");
//baturay merhaba dünya diyor ve not bırakmamış
merhabadunya("buyuk/kucuk harf duyarlılığı olmayan insan","java gibi değil demiş");
//buyuk/kucuk harf duyarlılığı olmayan insan merhaba dünya diyor ve java gibi değil demiş
Kapsam
Fonksiyon içerisinde kullanılan değişkenler, global olarak tanımlanmadığı sürece fonksiyonu belirleyen küme parantezleri(blok) içerisinde geçerlidir ve dışarıdaki bir değişkenden bağımsızlardır.
Referans ya da işaretçi kullanma
İşaretçiler, belirli bir bellek alanına(değişken) işaret etmek, o alanı referans göstermek için kullanılır ve bellekten tasarrufu sağlar. Bir değişkenin değerini alarak arttırıp yeniden atama yapmak yerine o değişkeni referans olarak gösterip direkt olarak onun içerisinde işlem yapmanızı sağlar.
Değer döndürmek
Bir fonksiyon belirli bir veri üzerinde çeşitli işlemler yapabilir, bu işlemler direkt olarak o veriyi etkileyebilir ya da fonksiyon kendini çağıran noktaya bir değer döndürebilecek şekilde yazılabilir. Bu return anahtar sözcüğü ile mümkündür.
function returnsuz()
{
echo "ben direkt olarak işlem yapıyorum. değer falan döndürmem";
}
function returnlu()
{
return "benim önümde bir değişken ya da yordam olmak zorunda yoksa havada kalırım ben";
}
returnsuz();
//ben direkt olarak işlem yapıyorum. değer falan döndürmem
$a = returnlu();
echo $a;
//benim önümde bir değişken ya da yordam olmak zorunda yoksa havada kalırım
echo returnlu()."ek metin";
//benim önümde bir değişken ya da yordam olmak zorunda yoksa havada kalırım ek metin
Recursive (kendini çağıran) fonksiyonlar
Aslında bir iteration(iterasyon, döngü) tekniği olan recursion fonksiyonlarda kullanılarak görevini icra eder.Kullanımı aşağıdaki gibidir;
İçiçe fonksiyon kullanımı
Not: Hazırlanırken Alfa Yayınları PHP ve MySQL kitabından yararlanılmıştır. -- Baturay Daylak
Aşağıdaki satır en basit fonksiyon çağrısıdır;
fonksiyon_adi();
Bu kullanım, çağrılacak fonksiyonun parametre sayısına göre değişebilir;
fonksiyon_adi(parametre1,parametre2);
$dosya = "cache.txtCh";
$streamModu = "r+";
$stream = fopen($dosya,$streamModu);
//file-stream fonksiyonlarından fopen'ın kullanımına bir örnek
$streamModu = "r+";
$stream = fopen($dosya,$streamModu);
//file-stream fonksiyonlarından fopen'ın kullanımına bir örnek
Fonksiyon tanımlamak, Temel Fonksiyon Yapısı ve Optional Parametreler
Bir fonksiyonun yapısı ve kullanımı genel olarak aşağıdaki gibidir;
function merhabaDunya($kimDemis)
{
echo "$kim merhaba dünya diyor";
}
merhabaDunya("baturay");
//baturay merhaba dünya diyor
merhabadunya("buyuk/kucuk harf duyarlılığı olmayan insan");
//buyuk/kucuk harf duyarlılığı olmayan insan merhaba dünya diyor
{
echo "$kim merhaba dünya diyor";
}
merhabaDunya("baturay");
//baturay merhaba dünya diyor
merhabadunya("buyuk/kucuk harf duyarlılığı olmayan insan");
//buyuk/kucuk harf duyarlılığı olmayan insan merhaba dünya diyor
İpucu: PHP'de fonksiyonlar parametre olarak değişken alabilmenin yanısıra, dizi değişkeni ve nesne gibi tipleri de kullanabilmektedir.
Önceki fonksiyonumuzu öntanımlı değeri olan parametre kullanarak yeniden şekillendirelim;
function merhabaDunya($kimDemis,$not="not bırakmamış")
{
echo "$kim merhaba dünya diyor ve $not";
}
merhabaDunya("baturay");
//baturay merhaba dünya diyor ve not bırakmamış
merhabadunya("buyuk/kucuk harf duyarlılığı olmayan insan","java gibi değil demiş");
//buyuk/kucuk harf duyarlılığı olmayan insan merhaba dünya diyor ve java gibi değil demiş
Kapsam
Fonksiyon içerisinde kullanılan değişkenler, global olarak tanımlanmadığı sürece fonksiyonu belirleyen küme parantezleri(blok) içerisinde geçerlidir ve dışarıdaki bir değişkenden bağımsızlardır.
$tepe = 100;
function tepeyleCakis()
{
echo "Cakismamak icin minimum $tepe yukseklikten ucunuz";
}
tepeyleCakis();
//Cakismamak icin minimum yukseklikten ucunuz
Örnekte de görebileceğiniz gibi fonksiyon bloğumuzdaki tepe değişkeni tanımsız ve içeriği olmayan bir değişken olduğu için ekran görüntüsünde global bloktaki $tepe değişkeninden etkilenmemiş, boş çıktı alınmıştır.function tepeyleCakis()
{
echo "Cakismamak icin minimum $tepe yukseklikten ucunuz";
}
tepeyleCakis();
//Cakismamak icin minimum yukseklikten ucunuz
Referans ya da işaretçi kullanma
İşaretçiler, belirli bir bellek alanına(değişken) işaret etmek, o alanı referans göstermek için kullanılır ve bellekten tasarrufu sağlar. Bir değişkenin değerini alarak arttırıp yeniden atama yapmak yerine o değişkeni referans olarak gösterip direkt olarak onun içerisinde işlem yapmanızı sağlar.
function referanssiz($deger,$artis=1)
{
$deger += $artis;
}
function referansli(&$deger,$artis=1)
{
$deger+= $artis;
}
$alan = 12;
referanssiz($alan); //kendi içerisindeki deger değişkeni 1 artar. alan değişmez
echo $alan; //12
referansli($alan); //deger alanına işaretçi ile referans alındığı için deger içeriği 1 artar
echo $alan; //13
{
$deger += $artis;
}
function referansli(&$deger,$artis=1)
{
$deger+= $artis;
}
$alan = 12;
referanssiz($alan); //kendi içerisindeki deger değişkeni 1 artar. alan değişmez
echo $alan; //12
referansli($alan); //deger alanına işaretçi ile referans alındığı için deger içeriği 1 artar
echo $alan; //13
Değer döndürmek
Bir fonksiyon belirli bir veri üzerinde çeşitli işlemler yapabilir, bu işlemler direkt olarak o veriyi etkileyebilir ya da fonksiyon kendini çağıran noktaya bir değer döndürebilecek şekilde yazılabilir. Bu return anahtar sözcüğü ile mümkündür.
function returnsuz()
{
echo "ben direkt olarak işlem yapıyorum. değer falan döndürmem";
}
function returnlu()
{
return "benim önümde bir değişken ya da yordam olmak zorunda yoksa havada kalırım ben";
}
returnsuz();
//ben direkt olarak işlem yapıyorum. değer falan döndürmem
$a = returnlu();
echo $a;
//benim önümde bir değişken ya da yordam olmak zorunda yoksa havada kalırım
echo returnlu()."ek metin";
//benim önümde bir değişken ya da yordam olmak zorunda yoksa havada kalırım ek metin
Recursive (kendini çağıran) fonksiyonlar
Aslında bir iteration(iterasyon, döngü) tekniği olan recursion fonksiyonlarda kullanılarak görevini icra eder.Kullanımı aşağıdaki gibidir;
function geri($giris)
{
if(strlen($giris)>0) geri(substr($giris,1));
echo substr($giris,0,1);
return;
}
geri("baturay");
//kendini şu şekilde çağırmaya devam eder;
//geri("aturay");
//geri("turay");
//geri("uray");
//geri("ray");
//geri("ay"),
//geri("y");
//geri("");
Aynı işlemi döngü ile yapan fonksiyon ise;
{
if(strlen($giris)>0) geri(substr($giris,1));
echo substr($giris,0,1);
return;
}
geri("baturay");
//kendini şu şekilde çağırmaya devam eder;
//geri("aturay");
//geri("turay");
//geri("uray");
//geri("ray");
//geri("ay"),
//geri("y");
//geri("");
İçiçe fonksiyon kullanımı
function eksilt($ne)
{
return $ne--;
}
function ikiArttir($ne)
{
return $ne+2;
}
function kare($ne)
{
return $ne*$ne;
}
$deger = 10;
echo kare(ikiArttir(eksilt($deger)));
//122
echo eksilt(kare(ikiArttir($deger)));
//143
İçiçe fonksiyon kullanımında işlem her zaman en içteki fonksiyondan başlar. Dıştaki fonksiyona doğru devam eder. (Zincirleme){
return $ne--;
}
function ikiArttir($ne)
{
return $ne+2;
}
function kare($ne)
{
return $ne*$ne;
}
$deger = 10;
echo kare(ikiArttir(eksilt($deger)));
//122
echo eksilt(kare(ikiArttir($deger)));
//143
Not: Hazırlanırken Alfa Yayınları PHP ve MySQL kitabından yararlanılmıştır. -- Baturay Daylak
Yorumunuzu Ekleyin