AÖF Soru Bankası

Web Sunucu ProgramlamaÜnite 6 Özeti

PHP’de Kullanıcı Tanımlı Fonksiyonlar

BİL206U-WEB SUNUCU PROGRAMLAMA

Ünite 6: PHP’de Kullanıcı Tanımlı Fonksiyonlar

Giriş

İçerisinde tanımlı olan yüzlerce fonksiyonun yanı sıra PHP, kullanıcılara kendi fonksiyonlarını tanımlama imkânı da sunmaktadır. Bu tür fonksiyonlar web sayfalarında sürekli yapılan işlemleri gerçekleştirirler ve bir defa yazıldıktan sonra tekrar tekrar kullanılabilirler. Örneğin bir alışveriş sitesinde alışveriş sepetine ürün eklemek için hazırlanan bir fonksiyon, müşteri alışveriş sepetine her ürün eklediğinde çağrılmakta ve kullanılmaktadır. Bu tür fonksiyonlara, “kullanıcı tanımlı fonksiyonlar” denir.

Fonksiyon tanımlarken “function” komutunun ardından bir boşluk bırakılarak, “fonksiyonİsmi()” yazılır. Fonksiyonun içerisine eklenecek kodlar ise, küme parantezlerinin “{}” arasına yazılır. Kullanıcı tanımlı bir fonksiyonun en temel hali, aşağıdaki gibidir:

<?php //Alttaki satırda "YeniFonksiyon" isimli bir fonksiyon tanımlanacaktır. function YeniFonksiyon() { //ilgili kodlar buraya, 2 adet küme parantezinin içerisine eklenir } ?>

Aşağıdaki örnekte, merhaba isimli ve ekrana “Merhaba Dünya!” yazdıran bir fonksiyon görülmektedir. Fonksiyonun görevi “Merhaba Dünya” cümlesini ekrana basmaktır. Sonrasında ise, merhaba() fonksiyonu çağrılmaktadır. Çağrıldığında Merhaba Dünya ifadesi tarayıcı ekranında gözükmektedir.

<?php //Fonksiyonu tanımlama function merhaba(){ echo "Merhaba Dünya!"; } //Fonksiyonu çağırma merhaba(); ?>

Fonksiyonlar, belirli bir görevi gerçekleştiren, tekrar kullanılabilir bir ifade bloklarıdır. Bu bloklar, “function” kelimesi ile tanımlanır ve program içerisinde istendiği kadar tekrar çağrılabilir. Fonksiyon isimleriyle ilgili önemli noktalar şunlardır:

• Fonksiyon isimlerinin ilk karakteri yalnızca alfabedeki harfler veya altçizgi “_” olabilir. • Fonksiyon isimleri büyük-küçük harflere duyarlıdır. • Fonksiyon isimleri benzersiz olmalıdır. • Fonksiyon isimleri boşluk içeremez.

Değer Döndürme İşlemi

PHP’de diğer programlama dillerinde olduğu gibi değer döndürülebilir. Değer döndürme işlemi fonksiyon içindeki bir işlem sonucu olarak herhangi bir değişken tipindeki

veriyi, nesne ya da diziyi fonksiyonun değeri olarak dışarı verebilir. Fonksiyonlarda değer döndürmek için return komutu kullanılır.

return Fonksiyonu

Fonksiyonlarımızın sonuçlarını, önceki örneklerde olduğu gibi “echo” komutu ile doğrudan ekrana yazdırabilir veya tekrar işleme alabilmek için öncesinde “return” ile döndürebiliriz. Fonksiyon return komutuna kadar çalışır ve return komutu işlendikten sonra fonksiyon sona erer. Fonksiyonlar, numerik, string, mantıksal veya dizi değerlerini döndürebilir. Return komutuna ilişkin örneğe ait kod aşağıdadır:

<?php function çarpma($sayi1, $sayi2) { //Burada fonksiyonumuz 2 sayının çarpımını döndürüyor return $sayi1 * $sayi2; } //Burada ise, dönen işleme parametreler atayıp sonucu ekrana yazdırıyoruz. Echo çarpma(4,5) + çarpma(7,8); ?>

Tıpkı diğer nesnelerde olduğu gibi, “return” komutu, dizileri de döndürebilir. Aşağıdaki örnekteki gibi:

<?php function dizi() { $spor=["Futbol", "Basketbol", "Voleybol"]; return $spor; } $dizi=dizi(); echo $dizi[2] ?>

Argüman İçeren Fonksiyonlar

Argümanlar tıpkı değişkenlere benzer ve fonksiyona bilgi taşımak için kullanılır. Argümanlar, fonksiyon isminden sonra parantez içerisinde yazılır. Fonksiyonlara istediğiniz kadar argüman ekleyebilirsiniz. Aynı fonksiyon içerisine eklenen birden çok argüman varsa bu argümanlar virgül ile ayrılmalıdır. Değişken isimlerinde olduğu gibi, argüman isimleri de “$” işareti ile başlar.

<?php function topla($arg1, $arg2){ return $arg1+$arg2; } $deger=topla(10,20); echo "Toplam:". $deger; ?>

Argümanlarının Varsayılan Bir Değeri Olan Fonksiyonlar

Bir fonksiyon tanımlarken, fonksiyonun argümanlarına varsayılan bir değer atanabilir. Bu değer, sonradan başka bir değer atanmaması halinde fonksiyonun döndüreceği değer olacaktır.


Bu örnekte, fonksiyonumuz varsayılan olarak atanmış “Kullanıcı” değerini döndürecek ve çıktısı “Selam Kullanıcı” olacaktır.

<?php function Merhaba($kul="Kullanıcı"){ echo "Selam $kul"; } Merhaba(); ?>

Ancak, varsayılan argüman değerini güncellemek mümkündür:

<?php function Merhaba($kul="Kullanıcı"){ echo "Selam $kul"; } //Burada "kullanıcı" olan varsayılan değeri "yeni kullanıcı" olarak güncelliyoruz Merhaba('yeni kullanıcı'); ?>

Burada çıktı “Selam yeni kullanıcı” olacaktır.

Global İfadesi ile Fonksiyon Dışından Değişken Kullanımı

Kimi durumlarda fonksiyonlarda fonksiyon dışında tanımlanmış değişkenlerin kullanılması gerekmektedir. Ancak fonksiyonlar fonksiyon dışında tanımlanmış değişkenleri kullanamazlar. Kullanabilmeleri için global komutunun kullanılması gerekir. Aşağıdaki kodların görüntüsü “25/5=5” şeklinde olacaktır:

<?php $dis_degisken=25; function bol($ic_degisken) { global $dis_degisken; return $dis_degisken / $ic_degisken; } echo "25/5=" . bol(5); ?>

Fonksiyon İçinde Fonksiyonlar ve Kendini Çağıran Fonksiyonlar

PHP’de fonksiyonlar normal fonksiyon çağırma dışında fonksiyon içinde fonksiyon ve kendini çağıran fonksiyon şeklinde de çağrılabilir. Bu iki farklı türdeki fonksiyon oluşturma ve çağırmanın neden ve nasıl yapıldığı sonraki alt bölümlerde anlatılmıştır. Öncelikle fonksiyon içinde fonksiyon oluşturma ve çağırma konusu işlenmiştir.

Fonksiyon İçinde Fonksiyonlar

PHP’de fonksiyonların içine başka fonksiyonlar ekleyebilirsiniz. Ancak, fonksiyon içerisine eklediğiniz fonksiyonların çalışabilmesi için önce ana fonksiyonu çağırmanız gerekir. Bu tür fonksiyonlar bir işin diğer bir işe bağımlı olduğu durumlarda kullanılabilir. Örneğin bir alışveriş sitesinden alışveriş yapılacaksa önce siteye üye olmak gerekiyor olabilir. Bu durumda alışveriş yapma

fonksiyonu üyelik fonksiyonu içinde oluşturulur. Üyelik fonksiyonunda üyelik kontrolü yapılmadan alışveriş işlemine geçilemez. “Bana ulaşabilmek için önce Selam() fonksiyonunu çağırman gerekir.” Çıktısına ulaşmak için aşağıdaki kodlara ihtiyaç vardır:

<?php function Selam() { function Merhaba() { echo "Bana ulaşabilmek için önce Selam() fonksiyonunu çağırman gerekir."; } } //Henüz Merhaba() fonksiyonunu çağıramıyoruz. Bunun için önce Selam() fonksiyonunu çağırmamız gerekli Selam(); //Şimdi Merhaba() fonksiyonunu çağırabiliriz. Merhaba(); ?>

Özyinelemeli Fonksiyonlar

Özyinelemeli fonksiyonlar, kendi içinde tekrar kendisini içeren fonksiyonlardır. Bu tarz fonksiyonlar, belirli bir koşul yerine gelene kadar kendini tekrar eder. Fonksiyon her çağrıldığında, parametreler ilgili koşula bağlı olarak yenilenir ve bu işlem hedef değere ulaşana kadar devam eder. Aşağıdaki örnekteki fonksiyon, 1’den 20’ye kadar olan sayıları yazdıran özyinelemeli bir fonksiyondur ve çıktısı “1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20” şeklindedir:

<?php function yinele($a) { // eğer a değeri 20'den küçük veya eşit ise, 20'ye ulaşana kadar 1 artacak ve kendini tekrar edecektir if ($a <= 20) { echo "$a\n"; yinele($a + 1); } } // 1'den başlayarak... echo yinele(1); ?>

include ve require Komutları

PHP’de önceden tanımlanmış ve fonksiyonları içeren PHP dosyaları güvenlik ya da kullanışlılık gibi çeşitli nedenlerle ayrı bir dosya halinde tutulur. Daha sonra ana kod bloğundan çağrılarak kullanılır. Bu işlemi yapabilmek için require ve include komutları kullanılır.

Aşağıdaki kod bloğunda cagrilan_dosya.php adında bir PHP dosyası bulunmakta ve dosya içinde merhaba() adında bir fonksiyon bulunmaktadır. Fonksiyon “cagrilan_dosya.php dosyasının içeriği.” adlı metni ekrana basmaktadır. Ancak index.php dosyasında include ya da require fonksiyonlarıyla çağrılmadan bu fonksiyon çalışmaz. O nedenle öncelikle bu iki komuttan biriyle cagrilan_dosya.php index.php dosyasına dahil edilmelidir.


Aşağıda cagrilan_dosya.php dosyasının kodları yer almaktadır.

<?php function merhaba(){ echo "cagrilan_dosya.php dosyasının içeriği."; } ?>

Burada dikkat edilmesi gereken nokta; require ve include konutları temelde aynı şekilde çalışır. Ancak require komutu kullanıldığında çağrılacak PHP dosyası bulunamazsa ana dosyadaki kodlar da çalışmaz. include komutu kullanıldığında ise çağrılan dosya yerinde bulunamazsa da ana dosyadaki kodlar çalışacaktır.

Bu ünitenin sorularını uygulamada çözŞıklar, doğru cevaplar ve süreli sınav modu AÖF Soru Bankası uygulamasında