Varsayılan parametreli fonksiyonlar

27 Mayıs 2008 Salı

- Varsayılan parametreli fonksiyonlar;

Bir fonksiyon içerisinde, kullanılan parametrelere varsayılan değerler de atanabilir. Parametrelere varsayılan değer atandığında, fonksiyon herhangi bir parametreye gerek duyulmadan da çağrılabilir. Bu durumda fonksiyonumuz, tanımlamada kullanılan parametrenin varsayılan değerini,parametre girilmiş olarak kabul edecek ve o parametrelerle çalışacaktır.

<?php
function faktor($varsayilan = 5)
{
$islem = 1;
for ($i = 1; $i <= $varsayilan; $i++)
$islem *= $i;
return $islem;
}
print faktor(). "<br/>";
print faktor(10)
?>

Örneğimizde kendisine atanan değerin faktöryelini bulan bir fonksiyon tanımlanmış ve alacağı parametreye varsayılan olarak 5 değeri atadık. Ardından önce kod parçamızdan faktor() fonksiyonumuz parametresiz olarak çağırdık,. Fonksiyonumuz varsayılan değer olarak 5 i kabul edip 120 değerini tarayıcımıza yansıtmıştır. Daha sonra faktor() fonksiyonumuza 10 değerini atayarak bir kez daha başvurup, varsayılan parametre değeri yerine, girmiş olduğumuz parametre ile işlem yapmasını sağlamış olduk.

- Parametre sayısı değişen fonksiyonlar;

Yapısı gereği bazı fonksiyonların alacağı parametre sayısı belli olamayabilir. Bu tür fonksiyonlar, fonksiyonun işleme alacağı değişken sayısının önceden kesinleştirilmemiş olmasından dolayı tasarlanırlar ve farklı sayılarda değişken üzerinde işlem yapabilmemizi sağlarlar. Bu tür fonksiyonlar tasarlanırkenuygulayacağımız yöntem, fonksiyona gönderilen parametrelerin, kaç adet olduğunu func_num_args(), fonksiyonu ile saptamamız, ardından parametrenin func_get_arg(); fonksiyonu ile indisli olarak çağrılması olacaktır. indisleme işlemi sıfırdan başlayarak, değişken saytısının bir eksiğine kadar yapılır.
Aşağıdaki örneğimizi dikkatle inceleyelim.

<?php
function carp()
{
$carpim = 1;
$degiskenAdedi = func_num_args();
for($i = 0; $i < $degiskenAdedi; $i++)
$carpim *= func_get_arg($i);
return $carpim;
}
print carp(1, 1, 1) ."<br/>";
print carp(5, 10, 10);

?>

Örneğimizde, tasarlamış olduğumuz fonksiyonun kendisine geçirilen farklı sayıdaki parametreleri alarak her bir değişkeni bir biri ile çarpmasını ve sonucu tarayıcımıza yansıtmasını sağladık.

func_num_args(); fonksiyonu hakkında daha geniş bilgi için burayı ziyaret ediniz.

func_get_arg(); fonksiyonu hakkında daha geniş bilgi için manuali ziyaret ediniz.

- Bir fonksiyonu durdurmak,

Bir fonksiyon, tüm deyimler çalıştırıldığında veya, return anahtar kelimesi kullanıldığında durur. Bir fonksiyon durdurğunda, ana kod parçasındaki, fonksiyona çağrı yapıldıktan sonraki deyime geri dönülür.

function deneme()
{
print "Bu deyim Çalıştırılacaktır";
return;
print " bu deyim ise returnden sonra kullanıldığından çalıştırılmayacaktır.";
}
print deneme();

Bir fonksiyonun çalıştırılmasını durdurmak için return anahtar kelimesine başvurmamızın temel sebebi, fonksiyonumuzun muhtemel bir hata koşulunu gerçekleştirme olasılığıdır. Fonksiyon içinde return deyimi çalıştırıldığında, o fonksiyon içerisinde returnden sonrayı takip eden deyimler görmezden gelinecektir.

- Fonksiyondan değer döndürmek;

Yukarıda fonksiyonları durdurmak için kullanmış olduğumuz return anahtar kelimesi, aynı zamanda o fonksiyonun, kendilerini çağıran kodla iletişim kurulması içinde kullanılır. Bu sayede fonksiyonu çağıran kod parçası, bu sonucu kullanıp kullanmayacağını, nasıl göstereceğini veya nasıl kullanacağını seçebilir.

- Statik değişkenler;

Bazı durumlarda, sadece bir fonksiyon için gerekli olan bir değişken tanımlamak zorunda kalabiliriz. Bunu yapmanın en iyi yolu, o değişkeni fonksiyonumuzun içierisinde tanımlamaktır. Ancak fonksiyonların kapsam özellikleri nedeniyle fonksiyon içerisinde tanımlanan değişkenlerin, fonksiyonların çalışması durduğunda yok olduğunu öğrenmiştik. Eğer bir fonksiyon içinde fonksiyonumuzun çalışması durduğunda değerini yitimeyen bir değişken tanımlamak ve o fonksiyon çağrıldıkça bu değişkene baş vurmak istiyorsak bu değişkeni static olarak bildirmeliyiz.

function ekle () {
static $degisken = 10;
$degisken++;
print $degisken;
}
// Başka kodlar buraya girebilir
ekle(); // Çıktımız burada 11 değerinde
print "<br/>";
ekle(); // Çıktımız burada 12 değerinde

Fonksiyonumuz her çağrıldığında static deyimi ile bildirdiğimiz değişkenin içindeki verinin kod parçamız tarafından işlendiğine ve değerinin ise fonksiyonda üretilen değer olarak saklandığına dikkat ediniz.

Gönderen _nl2br zaman: 02:16  

0 yorum:

Yorum Gönder