Merhaba arkadaşlar, mobilhanem.com sitemiz için hazırladığımız php derslerimizde bu ders Fonksiyonlar konusuna giriş yapacağız. Fonksiyonlardan biraz bahsedecek olursak; fonksiyonlar bir işlemi yaptırmak için her defasında aynı kodları kopyala yapıştır yapmak veya kodun okunurluğunu artırmak amaçlı yapmış olduğumuz kod sadeleştirme işlemidir. Örneğin bir sayfada toplama işlemini 10 farklı yerde kulandığımızı varsayarsak her yerde sayi2 = sayi1+sayi3 demek yerine fonksiyonu çağırmak daha mantıklıdır.
Fonksiyonlar
Fonksiyonlar function anahtar kelimesi kullanılarak oluşturulur. Örnek bir fonksiyon oluşturarak üzerinden konuşalım.
<?php function fonksiyonAdı($param1,$param2...) { // fonksiyonun yapacağı işlemler } ?>
Burada function anahtar kelimesinden sonra fonksiyonun adı ve fonksiyona ait parametreler gelir. Parametre dediğimiz kısım $param1,$param2 şeklinde verdiğimiz değişkenlerdir. Bu değişkenleri istediğimiz kadar verebileceğimiz gibi fonksiyona parametre vermek zorunda da değiliz. Daha sonra süslü parantezler içerisine fonksiyonun yapacağı işlemleri yazarak fonksiyonu oluştururuz.
Fonksiyonları geriye bir değer döndüren ve değer döndürmeyen fonksiyonlar olmak üzere ikiye ayırabiliriz. Geriye değer döndüren fonksiyonlarda değer döndürmek için return anahtar kelimesi kullanılır. örneğin: iki sayının toplamını geriye döndüren fonksiyon:
<?php function topla($s1,$s2) { return $s1+$s2; } $sayi1 = 5; $sayi2 = 10; echo 'İki sayının toplamı '.topla($sayi1,$sayi); ?>
Burada bahsedeceğimiz en önemli yer fonksiyonun adında verdiğimiz $s1 ve $2 değişkenleri fonksiyona ait değişkenlerdir ve sadece fonksiyon içerisinde kullanılırlar. $sayi1 ve $sayi2 değişkenlerimiz ise bizim asıl değişkenlerimizdir ve fonksiyona parametre olarak bu değişkenleri verdiğimizde fonksiyon çalışırken bu değerler $s1=$sayi1 $s2=$sayi2 olarak arkaplanda değiştirilir.
Fonksiyon örnekleri
1- Ekrana 10 kere merhaba dünya yazan fonksiyonumuzu oluşturalım.
function merhabaDunya($sayi) { for($i=1;$i<=$sayi;$i++) { echo "Merhaba Dünya <br/>"; } } merhabaDunya(10);
2- dortIslem adında bir fonksiyon oluşturalım. Fonksiyonun birinci parametresi sayı1 ikinci parametresi sayı2 ve üçüncü parametresi ise hangi işlem yapılacağı olsun.
- topla
- çıkar
- çarp
- böl
- diğer değerler için ise geçersiz işlem.
function dortIslem($s1,$s2,$i) { switch($i) { case 1: return $s1+$s2; case 2: return $s1-$s2; case 3: return $s1*$s2; case 4: return $s1/$s2; default: return "Geçersiz işlem."; } } $sayi1 = 20; $sayi2 = 10; $islem = 5; echo dortIslem($sayi1,$sayi2,$islem);
Varsayılan Parametreli Fonksiyonlar
Varsayılan parametreli fonksiyonlar bir parametrenin varsayılan olarak bizim belirlediğimiz bir değer olmasını istediğimiz zamanlarda kullanırız. Yukarıdaki örneğimiz üzerinden gidecek olursak mesela biz işlemi varsayılan olarak 1 yapalım ve kullanıcı 3. bir parametre girmezse işlem 1 kabul edilsin.
function dortIslem($s1,$s2,$i=1) { switch($i) { case 1: return $s1+$s2; case 2: return $s1-$s2; case 3: return $s1*$s2; case 4: return $s1/$s2; default: return "Geçersiz işlem."; } } $sayi1 = 20; $sayi2 = 10; $islem = 5; echo dortIslem($sayi1,$sayi2);
Fonksiyondaki değişikliklere bakarsanız 3. parametreye $i=1 olarak varsayılan bir değer atadım. Eğer 3. parametre girilmez ise varsayılan olarak değeri 1 olacak. Parametre girersek zaten normal bir fonksiyon gibi çalışmaya devam edecektir.
Recursive Fonksiyonlar
Recursive fonksiyon dediğimiz fonksiyonlar kendi kendini çağıran fonksiyonlardır. Bir fonksiyonun kendi kendini çağırabilmesi (recursive olabilmesi) için 2 temel şart vardır.
1- Kendi kendini çağırması
2- Bu çağırma işleminin bitmesi için bir koşul.
Kafanız karışmış olabilir ama örneğimizi yapınca aklınızda herhangi bir soru kalmayacaktır.
Örnek: 5! i hesaplayan bir recursive fonksiyon yazalım.
Şartlarımız sağlanıyor mu bir bakalım. 5! = 5.4! olduğu için kendi kendini çağırıyor fonksiyonumuz o zaman 1. şartımız sağlanıyor.
5! = 5*4*3*2*1; olduğu için en son 1 değerindeyken sonlandırma şartımız var 2. şartımızda sağlanıyor.
Örneğimiz recursive olarak yazılabilir diyoruz ve kodumuzu yazmaya başlıyoruz.
<?php function faktoryel($sayi) { if($sayi>1) // sayı 1 den büyükse 1 eksiğinin faktoryelini al. return $sayi*faktoryel($sayi-1); //fonksiyon kendini tekrar çağırıyor else return $sayi; // sayı 1 e eşitse de sayıyı döndür. } echo "5! = ".faktoryel(5); ?>
Fonksiyonumuzu anlatacak olursak:
1- 5 değerini aldı fonksiyon 5>1 şartı sağlanıyor ve geriye 5*faktoryel(4) değeri geldi ve faktoryel(4) işlemi başladı.
2- 4 değerini aldı fonksiyon 4>1 şartı sağlanıyor ve geriye 4*faktoryel(3) değeri geldi ve faktoryel(3) işlemi başladı.
3- 3 değerini aldı fonksiyon 3>1 şartı sağlanıyor ve geriye 3*faktoryel(2) değeri geldi ve faktoryel(2) işlemi başladı.
4- 2 değerini aldı fonksiyon 2>1 şartı sağlanıyor ve geriye 2*faktoryel(1) değeri geldi ve faktoryel(1) işlemi başladı.
5- 1 değerini aldı ve geriye 1 döndürdü ve değer 4. adıma gitti
6- fonksiyon 2*1 oldu bu değerde 3. adıma gitti
7- fonksiyon 3*2*1 oldu bu değerde 2. adıma gitti
8- fonksiyon 4*3*2*1 oldu bu değerde 1. adıma giderek bize 5*4*3*2*1 değerini döndürerek sonucu getirmiş oldu.
Recursive fonksiyonun çalışma mantığını kavrarsanız çok işinize yarar arkadaşlar.
Örnek2: 1 den girilen değere kadar sayıların toplamını veren recursive fonksiyonumuzu yazalım.
Fonksiyonun mantığını anlatmayacağım yukardaki şekilde siz çözmeye çalışırsanız recursive mantığını da oturtmuş olursunuz.
<?php function topla($sayi) { if($sayi>=1) // sayı 1 den büyükse 1 eksiğinin faktoryelini al. return $sayi+topla($sayi-1); else return $sayi; // sayı 1 e eşitse de sayıyı döndür. } echo "5-1 arası sayıların toplamı: = ".topla(5); ?>
Evet arkadaşlar bir dersimizin daha sonuna geldik. Bu dersimizin devamı olacak bir sonraki dersimiz olan PHP Dersleri – Fonksiyonlar – 2 dersimizde görüşmek üzere 🙂
Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.
Tüm php dersleri için tıklayınız..
7