Ne Öğreneceğim?
- PHP Fonksiyonları
Gereksinimler
- PHP 5.4 ve üzeri
- Linux İşletim Sistemi
Zorluk
- Orta Düzey
Eğitim İçeriği
Karmaşık ya da uzun programları tek düze halinde yazmak yerine küçük ve basit parçalara bölebiliriz. Buna göre, bir progragramda belirli bir işi gerçekleştirmek üzere hazırlanan küçük program parçalarına fonksiyon adı verilir. Fonksiyonların sağladığı faydaları kısaca aşağıdaki gibi özetleyebiliriz.
- Tek düze program yazmakta karşılaşılan karmaşıklığı ortadan kaldırır.
- Tekrarları önleyerek programı kısaltır.
- Değişiklikleri kısa sürede gerçekleştirme imkânı sunar.
- Hata durumunda tüm programın değiştirilmesine gerek duyulmaz.
- Programın daha anlaşılabilir ve okunabilir olmasını sağlar.
- Ve daha da fazlası...
Fonksiyonlar ile Çalışmak
PHP'de function deyimini kullanarak yeni bir fonksiyon tanımlayabilirsiniz. Fonksiyon isimleri değişken tanımlama kurallarına uygun olmalı ve kullanılması yasaklanan (empty, include, final vb. gibi) isimlerden oluşmamalıdır.
<?php
function fonksiyon_adi ( ) {
#fonksiyonun gerçekleştireceği işlemler
}
#fonksiyonu çağırmak/çalıştırmak
fonksiyon _adi ( );
?>
Burada basit olarak fonksiyonun nasıl tanımlanacağını ifade eden prototip yer almaktadır. Bir fonksiyon çağırılmadığı sürece asla çalışmazlar. Tanımlamış olduğunuz bir fonksiyonu nasıl çalıştıracağınız yine yukarıda belirtilmiştir.
Parametresiz Fonksiyonlar
Parametresiz fonksiyonlar, dışarıdan herhangi bir değişken almadan (global değişkenlere erişim gibi istisnai durumlar hariç) çalışan fonksiyon türleridir. Genellikle arka planda basit işlemleri gerçekleştirmek için kullanılırlar.
<?php
function tarihYaz ( ) {
echo date ("Y-m-d H-i-s") ;
}
tarihYaz ( );
?>
Yukarıda en temel yapı ile parametresiz fonksiyon örneği yer almaktadır. Fonksiyon çalıştırıldığında ekrana şimdiki tarihi ve saati (2018-01-24 01:07:46 gibi) yazar.
Parametreli Fonksiyonlar
Parametresiz fonksiyonlara göre daha gelişmiş kullanım yöntemidir. Fonksiyonlar dışarıdan bazı değerler alır, işlev ve sonuç üretir. Bir fonksiyona bir veya daha fazla parametre alabilir. Parametreler ihtiyaca uygun olarak istenilen veri tipinde kullanılabilir.
<?php
function carpma ($birinci, $ikinci, $ucuncu) {
echo $birinci * $ikinci * $ucuncu ;
}
carpma (1, 2, 3); #ekrana 1 * 2 * 3 = 6 yazılacaktır.
?>
Yukarıdaki fonksiyon, kendisine gönderilen 3 adet integer (tamsayı) tipli değeri çarpma işlemine sokarak sonucu ekrana yazdırıyor. Eğer daha az sayıda değer göndermiş olsaydınız, PHP yorumlayıcısı uyarı hatası oluşturacak ve fonksiyon çalıştırılmayacaktı.
Parametrelere İlk Değer Verme
Bazen parametreli fonksiyonlar kullanılırken, özel durumlarda parametrelere ilk değeri verebiliriz. Eğer kullanıcı ilk değeri verilen parametreyi eksik girmiş ise, bizim ön gördüğümüz değeri alarak işlemini sürdürmeye devam eder.
<?php
function carpma ($birinci, $ikinci, $ucuncu = 5) {
echo $birinci * $ikinci * $ucuncu ;
}
carpma (1, 2); # ekrana 1 * 2 * 5 = 10 yazılacaktır.
carpma (1, 2, 3); # ekrana 1 * 2 * 3 = 6 yazılacaktır.
?>
Örneğin; yukarıdaki fonksiyon yine 3 adet integer değer alıyor. Ama fonksiyon çapırılırken 2 adet gönderilmiş. Dikkat ederseniz fonksiyon tanımlanırken eğer üçüncü değer girilmemiş ise, alması gereken varsayılan değeri 5 olarak belirttik.
Dikkat edilmesi gereken bir nokta ise, parametrelere ilk değerlerin verilmesi sondan başa (sağdan sola) doğru olmalıdır. Aşağıdaki fonksiyonlara ilk değer verilmesi için bazı fonksiyon tanımlamalarının prototipleri yer almaktadır. Örneklerdeki doğru ve hatalı tanımlamaları inceleyelim.
<?php
#Doğru - sondan başa doğru tanımlanmış
function carpma ($birinci, $ikinci, $ucuncu = 5) { }
function carpma ($birinci, $ikinci = 4, $ucuncu = 5) { }
#Hatalı - direkt olarak aradaki değerlere ilk değer verilemez
function carpma ($birinci = 3, $ikinci, $ucuncu) { }
function carpma ($birinci = 3, $ikinci = 4, $ucuncu) { }
function carpma ($birinci = 3, $ikinci, $ucuncu = 5) { }
function carpma ($birinci, $ikinci = 4, $ucuncu) { }
?>
Değer Döndüren Fonksiyonlar
Şimdiye kadar hep fonksiyon içinde gerçekleştirilen işlemin sonucunu ekrana yazdırdık. Fakat fonksiyon içindeki hesaplama sonucuna göre başka bir işlem yapılacaksa ne yapacağız? Fonksiyonlarda return deyimini kullanarak dışarıya işlem sonuçlarını gönderebilirsiniz. Fonksiyonlar nasıl ki her tipte veri alabiliyorsa, dışarıya da her tipte veri gönderebilir.
<?php
function carpma ($birinci, $ikinci, $ucuncu) {
return $birinci * $ikinci * $ucuncu;;
}
$sonuc = carpma (1, 2, 3);
echo $sonuc; #ekrana 1 * 2 * 3 = 6 yazılacaktır.
?>
Yukarıdaki örnekte fonksiyon yine çarpma işlemini gerçekleştiriyor ve sonucu ekrana yazdırmak yerine return deyimi ile geri döndürüyor. Fonksiyondan dönen değeri bir değişkende saklamak için fonksiyon çağırılırken $sonuc değişkenine eşitlendiğine dikakt edin. Böylece fonksiyon işlemi gerçekleştirdikten sonra değerini $sonuc değişkenine yükleyecektir.
Özyinelemeli (Resucursive) Fonksiiyonlar
Özyinelemeli fonksiyonlar, kendi kendini tekrarlayan fonksiyonlara verilen isimdir. Fonksiyon içerisinde oluşturulan koşul sağlanana dek, fonksiyon sürekli olarak kendini çağırır. Genellikle parametreli fonksiyonlar ile kullanılır ve fonksiyon her çağırıldığında parametre koşula bağlı olarak artırılarak veya azaltılarak koşul sağlanmaya çalışılır. Bu esnada dilediğiniz işlemi fonksiyona yaptırabilirsiniz.
<?php
function faktoriyel ($n) {
if ($n < 1)
return 1;
else
return $n * faktoriyel ($n - 1);
}
echo faktoriyel (5);
?>
Bu örnek ile özyinelemeli olarak faktoriyel hesabı gerçekleştirilmektedir. Örnekteki fonksiyon $n değişkenine girilen değer kadar (n defa) kendini yineleyecektir.
Katkılarından dolayı Sercan Çakır'a teşekkürler.
PHP Fonksiyonları serimizin birinci kısmı bu kadar, bir sonraki yazımızda deyimler ve diziler ile devam edip fonksiyonlar konusunu sonlandıracağız. Okuduğunuz için teşekkürler, iyi çalışmalar.
Seri
Posted on Utopian.io - Rewarding Open Source Contributors
Thank you for the contribution. It has been approved.
You can contact us on Discord.
[utopian-moderator]
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hey @sedatyildiz I am @utopian-io. I have just upvoted you!
Achievements
Suggestions
Get Noticed!
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!
Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit