PHP fonksiyon kullanımı ve örnekleri
Başlangıç seviyesinin son dersi olan fonksiyonlar bir şeyler inşa etmeye başlamamız için öğrenmemiz gereken en harika derslerden birisi. Teorik olarak matematik dersinde gördüğümüz fonksiyonlar gibidir.
Oluşturduğumuz bir değişken ve içine yazdığımız kodları istediğimiz yerde tanımladığımız fonksiyonun adıyla çalıştırıp tekrar tekrar kullanabiliyoruz.
Gerek çalışmalarımızda çok sık tekrar edeceğimiz kodları bir yerde paket haline getirip bir fonksiyon adıyla çağırmak için, gerekse işe yarar kodları belli başlıklar altında derleyip düzenli çalışmalar yapmak için göz bebeğimiz olan fonksiyonları öğrenmeye hazır olun.
PHP fonksiyon kullanımı
PHP’nin kendi içinde yüzlerce fonksiyonu vardır. Diğer derslerde gördüğümüz isset(), empty(), unset() gibi. Fonksiyon oluşturmak ve kullanmak gayet basit, ama basit olduğu gibi derin konuları da var.
İlk önce nasıl bir fonksiyon oluşturacağımızı gösterelim:
function selam_ver() { echo 'Selam!'; }
Yukarıda selam_ver() adında bir fonksiyon oluşturduk. Bu şekilde bir kodu çalıştırsak ekrana bir çıktı vermez. Çünkü şuan sadece bir fonksiyon tanımladık, içine yazılan kodların çalışması için o fonksiyonu çağırmamız gerekiyor.
Hemen bu fonksiyonun altına selam_ver(); yazacak olursak eğer, işte o zaman ekranda Selam! yazar.
Hemen başka bir örnek daha verelim:
function rakamlar() { for($sayi = 0; $sayi<10; $sayi++) { echo $sayi; } } rakamlar(); // oluşturduğumuz fonksiyonu çağıralım
Ekranda 0123456789 yazacaktır.
Fonksiyonlara parametre ekleme
Yukarıdaki örnekte yaptığımız fonksiyonlar dışarıdan veri almadan, her seferinde çağrıldıklarında aynı şeyi çalıştıracak olan fonksiyonlardı. Ama şimdi bu fonksiyonlara bir kaç parametre eklettirerek farklı kullanımlara kapılarını açabiliriz.
Hemen parametreli bir fonksiyon yapalım:
function topla($sayi1, $sayi2) { $sonuc = $sayi1 + $sayi2; echo $sonuc; } topla(5, 10);
Şimdi topla adında bir fonksiyon oluşturduk ve buna 2 adet parametre ekledik. $sayi1 ve $sayi2 parametreleri bizim o fonksiyonu kullanırken yazacağım değerlerin yükleyeceği değişkenlerin adı.
Biz topla(5, 10) dediğimizde fonksiyon içinde $sayi1 değişkeninin değeri 5, $sayi2 değişkeninin değeri ise 10 olacak. Ve ekranda da 15 yazacaktır.
Parametreli fonksiyona bir başka örnek daha verelim:
function bolunur_mu($bu, $buna) { $kalan = $bu % $buna; if($kalan == 0) { echo $bu . ' sayısı ' . $buna . ' sayısına bölünür!'; } else { echo $bu . ' sayısı ' . $buna . ' sayısına bölünmez! (kalan: '.$kalan.')'; } } bolunur_mu(10, 2); bolunur_mu(25, 10);
İki rakamın birbirine bölünüp bölünmediğini kontrol eden bir fonksiyon yaptık. Ve bu fonksiyonu 2 farklı değerde kullanıp çağırdık. Bu çalışmanın sonunda ekranda yazacak olanlar:
10 sayısı 2 sayısına bölünür! 25 sayısı 10 sayısına bölünmez! (kalan: 5)
Parametrelere varsayılan değer verme
Parametreli bir fonksiyon yaptığımızda sorunsuz çalışabilmesi için tüm parametrelerin girilmesi gerekir. Mesela yukarıda verdiğimiz topla fonksiyonunu topla(1); şeklinde çalışmaya kalktığımızda PHP hata verecektir.
Çünkü fonksiyonu 2 tane parametre ile çalışmak üzere tasarladık. Ama bu durumlara bir istisna sağlayarak parametrelerimize varsayılan değer atayıp, parametresiz de çalışmalarını sağlayabiliriz.
Şimdi varsayılan parametreli bir fonksiyon yapalım:
function hosgeldin($isim = 'Misafir') { echo 'Hoşgeldin ' . $isim . '! '; } hosgeldin(); hosgeldin('Musa');
Örnekte hosgeldin() fonksiyonunu ilk olarak parametresiz, ikinci olarak da parametreli çalıştırdık. Bu durumda fonksiyonun parametresini tanımladığımız yerde hosgeldin($isim = ‘misafir’) şeklinde parametreye varsayılan değer atadığımız için boş bıraktığımızda o parametreye bu değeri verecektir. Yani ekranın çıktısı aşağıdaki gibi olacaktır:
Hoşgeldin Misafir! Hoşgeldin Musa!
Return ifadesi ile sonucu atama
Yukarıda yaptığımız tüm örneklerde fonksiyon sonuçları echo ile ekrana yazdırdık. Peki ya biz fonksiyonlardan elde ettiğimiz sonuçları ekrana yazdırmak değilde bir değişkene atayıp kullanmak istiyorsak? İşte o zaman return ifadesini kullanacağız.
Return ifadesi ile fonksiyon içinde elde ettiğimiz sonucu dışarıya aktarırız. Hemen bir örnek ile hayata geçirelim:
function topla($sayi1, $sayi2) { $sonuc = $sayi1 + $sayi2; return $sonuc; } $hesap = topla(10, 20); echo 'Fonksiyon ile toplama yaptık ve sonuç: ' . $hesap;
İşte yukarıdaki örnekte gördüğün gibi bu sefer aynı topla() fonksiyonu ile echo yerine return yazdık. Bu da fonksiyonun sonucunu ona eşitlediğimiz bir değişkene atadı. Yani fonksiyon toplamayı yaptı ve sonucu $hesap değişkenine aktardı sonra biz onu echo ile ekrana yazdırdık.
Fonksiyonlarda global ifadesi kullanımı ve örneği
Fonksiyonların içerisinde tanımladığın değişkenler dışarıya gönderilmez ve aynı şekilde dışarıda tanımladığın bir değişken fonksiyon içinde görülmez. Yani fonksiyonlara kendi içinde bir dünya diyebilirsin. Hemen örnek ile kafanda canlandıralım:
function deneme() { $isim = 'Musa'; } deneme(); echo $isim;
Bu kodu çalıştırdığımızda PHP yalnızca isim adında bir değişken olmadığı için hata verir. Biz $isim değişkenini fonksiyon içinde tanımladık ve yalnızca orada kullanabiliriz. Dışarıya aktarmak için return ifadesini kullanıyoruz.
Eğer fonksiyon içine dışarıdan bir değişkeni sokmak istiyorsak, yani global bir değişkeni çağırmak istiyorsak global ifadesini kullanırız.
$isim = 'Musa'; function selam() { global $isim; // Dışarıda tanımlanmış bir değişkeni fonksiyon içine çağırdık echo 'Selam ' . $isim; } selam();
Ekranda Selam Musa yazar. Global ifadesini kullanarak fonksiyon dışında yazdığımız bir değişkeni çağırdık ve ekrana yazdırdık.
Return ifadesi kullanılmadan fonksiyon içindeki bir değişkeni veya çıktıyı dışarı aktaramayız. Global ifadesi kullanılmadan da dışarıda kullanılan bir değişkeni fonksiyon içine aktaramayız.
Fonksiyonlarda referans ile değer atama
Return ifadesini kullanarak değer atama yaparken fonksiyonun başında bir değişkeni ona atamak için (= eşittir işareti) atama operatörünü kullanırız. Peki dikkatini çekti mi bilmiyorum ama dizilerde sıralama yapan fonksiyonları (sort(), rsort()) bu şekilde kullanmıyorduk.
Sadece fonksiyonu çalıştırarak dışarıdan parametreye gönderilen değişkenin değerini referanslar ile değiştirebiliriz.
Referans uygulamak istediğimiz değişkenin başına (&) operatörünü koyarız. Bu operatörü yerleştirdiğimiz parametreler, dışarıdan verilecek olan değişkenlerle beraber değişirler.
function topla(&$sayi) { $sayi = $sayi + 10; } $x = 10; topla($x); echo $x;
Ekranda 20 yazar. Topla fonksiyonunun parametresinde kullandığımız referans nedeniyle o parametreye yüklenen değişkenin değeri fonksiyon içinde değiştirmemizle değişecek. Burada da fonksiyon içinde o parametreye +10 eklediğimiz için dışarıdaki değişkeninde değeri 10 artmış oldu.
Faydalı bir kaç PHP fonksiyonu öğrenmek için bir sonraki yazımı okumayı unutma.
Başka bir PHP serüveninde görüşmek üzere hoşçakalın.
Yazılanlar ilgini çektiyse, yenilerinden haberdar olmak için e-mail bültenine abone olabilirsin.
[…] PHP fonksiyonları. […]
Teşekkürler Musa bey, çok sağlıklı bir şekilde anlatım yapılmış. Emeğinize sağlık.
En iyi php dersleri burda. Tesekkurler
Gerçekten çok güzel bir anlatım olmuş. Emeğinize sağlık. Sade ve kapsamlı 🙂
Emeğinize Sağlık Sade Ve Açıklayıcı Çok İşime Yaradı
Gerçekten çok güzel sade ve anlaşılır bir anlatım olmuş. Ben phpye yeni başlayan biri olarak çok beğendim sitenizi. Emeğinize sağlık. Yayınınız için çok teşekkürler.
Çalıştığım bi kaç kaynaktan birisiniz gerçekten çok teşekkürler bilgilerimi pekiştiriyorum.Bide ileri seviye Php derslerini ne zaman hazırlarsınız?
yakın zamanda yeni yazılarla geliyorum inşallah. sağ üst kısımdan e-mail ile abone olmayı unutmayın ve takipte kalın.
ilginiz ve mesajınız için çok teşekkürler.
Rica ederim üstad abone oldum.Bi yerden sonra senin gibi PHP den anlayan arkadaşlar sayesinde öğreniyoruz.Tek başına mantığı kavramak kolay değil çok büyük bi hayır işliyosun diyebilirim yani 🙂
Emeğiniz için teşekkurler cok geniş bir şekilde fonksiyon’u tanıtmısınız
Çok sağol. Kafa karışıklıklarımı çözdü bu yazı. Allah razı olsun.
Return ifadesi ile sonucu atama’da neden return’de $sonuc’a atamışken ekrana yazdırmak için $hesap adlı bir değişkene atayıp sonra $hesap değişkeni ile ekrana yazdırıyoruz.
çünkü sonuç değişkeni fonksiyonun içinde oluşturulmuş bir değişken olduğundan onu dışarıda kullanamadığımız için fonksiyon sonucunu hesap adlı değişkene atayıp öyle yazdırdık. Cevap biraz geç oldu ama ben yeni başladım :))
function deneme() {
$isim = ‘Musa’;
return $isim;
}
deneme();
echo $isim;
yazıyorum neden hata veriyor? Return ile fonksiyon içindeki bir değişkeni dışarıda da kullanamıyor muyduz. yazıda öyle denilmiş..
Çözümü buldum, illaki bir fonksiyonu bir değişken içine atıp, öyle echo ile ekrana yazacağız, başka yolu yok heralde..
Allah razı olsun, devamını bekliyoruz, mantıklı kod tasarımlarının..
Merhaba php öğrenmek istiyorum.Sizin sitenizi takip ederek öğrenme şansım varmı? Başlangıç için kursa gitmemi tavsiye eder misiniz?
Ben şahsen hiç PHP kursuna gitmedim. İnternetteki yabancı kaynaklar ile kendimi geliştirmeye çalıştım. Fakat ücretli kurslar yerine internetteki ücretsiz anlatımları ya da orta seviye PHP kitapları alıp incelemenizi önerebilirim. Ayrıca buranın da hatrının sayılabileceğini düşünüyorum 🙂 Başarılar!
güzel anlatım teşekkürler.
Fonksiyonları kullanırken sorun yaşamıyorum. Sadece wordpress entegresinde yaşıyorum. Artık çıldırma noktasına geldim. admin sayfasına uyarladığım bir tablolama sistemi var ve tablolar çok kalabalık bu yüzden 1 tane tablonun sonucu ayrı bir sayfa içerisinde göstericem 2 sayfada hazır fakat bunlar sayfa şeklinde değil fonksiyon olarak yazdığımdan bir fonksiyonun içerisine diğer fonksiyondan veri aktarımını nasıl yapıcam sıkıntı bu
Lütfen bana yardımcı olun ben fonksiyon içine yazılan değeri explodeyle dizi yapıp sonra ne kadar yazı yazılsa bile onları da dizi yapıp sonra onu ekrana yazdırma
TŞK
function topla($sayi1, $sayi2) {
$sonuc = $sayi1 + $sayi2;
return $sonuc;
}
$hesap = topla(10, 20);
echo ‘Fonksiyon ile toplama yaptık ve sonuç: ‘ . $hesap;
bu örnekte return kullanmazsak bir farklılık olurmuydu?
Ekrana 30 yazmazdı.
hocam benim bi sorun olacaktı. şimdi üyelik paneli yaptım sorunsuz çalışıyo ama şunu yapamadım üye olunca onun üye adını link yapmasını istiyorum mesela younus adında üye kaydı yaptım onun profilinin http://www.örnek.com/younus bu şekild olmasını istiyorum nasıl yapabilirim.
Dostum Musa abi Sana cevap veremiycek neden dersen ?
Sayfa 2 yıldan Fazladır Blog Yaynı yapmıyor ne yazıkki….
uzun süredir yazı yazmıyorum fakat yorumları takip etmeye çalışıyorum
O kadar php ile ilgili video izledim okuyarak anlamıyorum diye vallahi süper bunlar çok sağolun Musa bey kendim için not bile çıkardım.Sağolun. 🙂
Teşekkürler bana çok faydalı oldu 🙂
saol hocam emeklerine sağlık
anlatım çok güzel.diğer programlama dillerini de anlatmalısınız biliyorsanız. bilmiyorsanız öğrenip anlatmalısınız..
sayfa güzel ama daha çok program yazabilirsiniz!!!!!
teşekkürler gerçekten çok faydalı bir siteniz var uygulama derslerinede ağırlık verirseniz çok iyi olacak
çok güzel. teşekkürler.
çok güzel.
Arkadaş dersler güzel ama çok önemli bir hatayı duzeltirmisiniz. derslerin içinde (=) eşittir ifadesi kullanılıyor. (=) ifadesi programlamada bilgidigimiz anlamdaki eşittir kelimesini ifade etmiyor yanlış anlamlara ve kafa karışıklıgına ve motivasyon kaybına sebep oluyor lutfen (=) eşittir kelimesi yerine atama kelimesini kullanırmısınız.
programlamada x = x +100 eşit olmaz. dunyanın hic bir varlıgı kendisinden 100 fazlasına eşit olamaz.
teşekkürler iyi çalışmalar
dikkatin ve yorumun için çok teşekkürler, hemen düzelttim.
girilen iki sayı arasındaki sayılardan t harfine basıldığında tek sayıları c harfine basıldığında çift sayıları a harfine basıldığında asal sayıları fonksiyon kullanarak bulan ve ekrana yazdıran php programını yazınız. bunu yapabilirmisiniz.
Merhaba hocam. Dördüncü örneğinizde
” bolunur_mu(10, 2);
bolunur_mu(25, 10);”
sayıları kullanıcıdan alabilir miyiz? Yani bolunur_mu($a,$b); gibi bir kod yazılabilir mi? Şimdiden cevabınız için teşekkürler
evet yazılabilir
Foksiyonlar her daim başımın belası olmuştu her ne hikmetse mantığını bilmeme rağmen küçük fonksiyonlarda hep sıkıntı yaşıyordum bu bilgiler ile en azından kaideyi tam olarak kafamda oturttum birde şunun farkına vardım fonksiyon yazımı uçsuz bucaksız yani hemen hemen herşeyi fonksyonlar ile kolay hale getirebiliyoruz ve birden fazla kullanımı ilede gayet rahat hızlı sonuçlar alabiliyoruz.
Tek takıldığım nokta bir fonksiyon içinde birden fazla işlem yaparak return ile birden fazla çıktı nasıl verilcek bunun içinden çıkamadım yani bir fonksiyon yazıp içinde birden fazla işlem yaparak birden fazla sonuç döndürmek istediğimizde bunu nasıl yapacağız her bir işlem için fonksiyon içinde fonksiyonmu oluşturmak gerekiyor yoksa düz mantıkla her biri için ayrı ayrı fonksiyonmu yapmak lazım.
yani güzel bence videolu anlatım olmalıydı tek eksik bu bence