PHP'de fonksiyonlar
function komutu ile oluşturulur.Tanımladığımız fonksiyon, kendisini göreve çağıracak komuittan,yapacağı işlemde kullanmak üzere değer alacaksa, bu değerlerevereceğimiz değişken isimleri fonksiyon adının yanında parantez içindegösterilir. Fonksiyon birden fazla değer bekleyecekse, bunlarındeğişken adlarının arasına virgül koyarız. Fonksiyona ulaştırılandeğerlere
argüman denir. Fonksiyon, kendisine bir değerulaştırılmasını beklemese bile içi boş parantez koymamız gerekir. Bunagöre PHP'de fonksiyon şöyle yazılır:
function fonksiyonun_adı (argüman1, argüman2, ... argümanN) {
fonksiyonun yapacağı işe ilişkin komutlar
}
Fonksiyon adları, değişken adları ile aynı kurallara tabidir.Fonksiyon içinden fonksiyon çağrılabilir; fonksiyonların içinde PHP'ninkendi fonksiyonları kullanılabilir. Şimdi, ilk örnek fonksiyonumuzuyazalım.
Yukarıdaki örneklerde, PHP'ye, bir Web sayfası oluştururken HTMLögesi olacak bazı satırların başına <H1>, satır sonlarına<BR> gibi etiketler koydurduğumuza dikkat etmiş olmalısınız. Birprogramda bu işi sık sık yapacaksak, yani metinlerimiz <BR> ilebitecek, bazı başlıklarımız ise sayfamıza HTML'in başlık etiketleri ilegönderilecekse, bu etiketleri defalarca yazmamız sadece zorluk değil,fakat aynı zamanda yazım hatasını davet eden bir davranır olur. PHP'dekendisine vereceğimiz metinleri başlık veya gövde yazısı olarakbiçimlendirecek fonksiyonlar tanımlayarak, programcılıkta daimatehlikeli olan insan unsurunu asgarîye indirebiliriz. Şu programıyazdir01.php adıyla kaydederek, Browser'da açın:
<HTML>
<HEAD>
<TITLE>PHP'de Fonksiyon</TITLE>
<meta http-equiv="content-type" ***********"text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" ***********"text/html; charset=windows-1254">
</HEAD>
<BODY>
<?php
function yazdirBR ($metin) {
print ("$metin<br>\n");
}
function yazdirH1 ($metin) {
print ("<h1>$metin</h1>\n");
}
function yazdirH2 ($metin) {
print ("<h2>$metin</h2>\n");
}
function yazdirH3 ($metin) {
print ("<h3>$metin</h3>\n");
}
function yazdirH4 ($metin) {
print ("<h4>$metin</h4>\n");
}
function yazdirP ($metin) {
print ("<p>$metin</p>\n");
}
// Başka kodlar buraya girebilir
yazdirH1("Bu H1 Başlık");
yazdirH2("Bu H2 Başlık");
yazdirH3("Bu H3 Başlık");
yazdirH4("Bu H4 Başlık");
yazdirBR("Bu kendisinden sonra BR olan birinci metin.");
yazdirBR("Bu kendisinden sonra BR olan ikinci metin.");
yazdirP("Bu uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun
uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun
bir paragraf metni.");
yazdirP("Bu uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun
uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun
bir diğer paragraf metni.");
?>
</BODY>
</HTML>
Bu programda, yazdirBR(), yazdirH1(), yazdirH3(), yazdirH4(), veyazdirP() adlarıyla altı fonksiyon tanımladığımızı görüyorsunuz. Bufonksiyonların hepsi kendilerini göreve çağıran satırdan, kendilerinebir değer verilmesini istiyorlar ve bu değeri $metin adlı değişkendetutuyorlar. Fonksiyonlarımız tümü de PHP'nin print() fonksiyonundanyararlanıyor; ancak bu fonksiyonun nasıl kullanılacağını, nasılişletileceğini de belirliyorlar. Buna göre bazı fonksiyonlarımız $metinadlı değişkenin değerini önüne ve arkasına bir HTML etiketi koyarakBrowser'a gönderiyor; birisi ise sadece $metin değişkenin tuttuğudeğerin sonuna bir HTML etiketi koyduruyor. Fonksiyonlarımı buradakiörnekte olduğu gibi hemen oluşturulduktan sonra göreve çağırmayız.Geleneksel olarak, bir programda kullanılacak fonksiyonlar, programınbaş tarafında toplanır ve daha sonra nerede gerekirse orada,çağrılırlar. Fonksiyonları adlarını ve kendilerine verilmesi gerekenbir değer varsa o değeri parantez içinde yazarak çağırırız. Buradaolduğu gibi, fonksiyonu göreve çağırırken parantez içinde değerinkendisini yazabileceğimiz gibi, bu değeri tutan bir değişkenin adını dayazabiliriz. Bu programı çalıştırırsanız, Browser'da bu görüntüyü eldeedebilirsiniz:
Şimdi, bu penceredeki belgenin kaynağını görüntüleyelim. Karşımıza şuna benzer bir metin çıkmış olması gerekir:
<HTML>
<HEAD>
<TITLE>PHP'de Fonksiyon</TITLE>
<meta http-equiv="content-type" ***********"text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" ***********"text/html; charset=windows-1254">
</HEAD>
<BODY>
<h1>Bu H1 Başlık</h1>
<h2>Bu H2 Başlık</h2>
<h3>Bu H3 Başlık</h3>
<h4>Bu H4 Başlık</h4>
Bu kendisinden sonra BR olan birinci metin.<br>
Bu kendisinden sonra BR olan ikinci metin.<br>
<p>Bu uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun
uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun
bir paragraf metni.</p>
<p>Bu uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun
uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun
bir diğer paragraf metni.</p>
</BODY>
</HTML>

Bu, bize, oluşturduğumuz bütün fonksiyonların kendilerinden bekleneniyaptığını ve kendilerine verdiğimiz metinleri, tıpkı istediğimiz gibi,arzu edilen HTML etiketleri ile birlikte Browser'a gönderdiklerinigösteriyor.Buradaki fonksiyon, kendisini bir iş yapan türden fonksiyondur. Oysakimi zaman fonksiyonlar, kendilerini göreve çağıran komuta bir değergönderirler. Şimdi de böyle bir fonksiyon örneği yazalım. Aşağıdakikodu,
hesapla.php adıyla kaydedin:
<HTML>
<HEAD>
<TITLE>PHP'de Fonksiyon</TITLE>
<meta http-equiv="content-type" ***********"text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" ***********"text/html; charset=windows-1254">
</HEAD>
<BODY>
<?php
function topla ($sayi1, $sayi2) {
$sonuc = $sayi1 + $sayi2;
return $sonuc;
}
function cikart ($sayi1, $sayi2) {
$sonuc = $sayi1 - $sayi2;
return $sonuc;
}
function carp ($sayi1, $sayi2) {
$sonuc = $sayi1 * $sayi2;
return $sonuc;
}
function bol ($sayi1, $sayi2) {
$sonuc = $sayi1 / $sayi2;
return $sonuc;
}
// Başka kodlar buraya girebilir
$sayi1 = 12;
$sayi2 = 5;
print topla($sayi1, $sayi2);
print ("<br>");
print cikart($sayi1, $sayi2);
print ("<br>");
print carp($sayi1, $sayi2);
print ("<br>");
print bol($sayi1, $sayi2);
print ("<br>");
?>
</BODY>
</HTML>
Bu programda, dört aritmetik işlemi yapan dört ayrı fonksiyontanımlıyoruz. Fonksiyonlarımız kendilerini göreve çağıran komuttan,kendilerine iki değer vermesini bekliyorlar ve bu değerleri $sayi1 ve$sayi2 adlı değişkenlere yazıyorlar. Sonra herbiri, kendisindenbeklenen aritmetik işlemi yaparak, sonucunu $sonuc adlı değişkeneyazıyor. Burada dikkat edeceğimiz nokta,
return komutudur. Bukomut, f onksiyonun elde ettiği değeri, değeri tutan değişkenin adıyla,fonksiyonu çağırmış olan satıra gönderir.
return komutuyla, kendisini göreve çağıran satıra değil fakat mesela başka bir fonksiyona da değer gönderebiliriz:
return ( baska_fonksiynon ( $degisken)) ;
Fonksiyonun
return satırında böyle bir başka fonksiyonun adı yazmıyorsa, bulunan değer göreve çağıran satıra gönderilir.
Bu program, içine bizim yazdığımız iki değeri hesaplayarak,Browser'a gönderecektir. Ancak bu değerler ziyaretçinin dolduracağı birformdan alınabileceği gibi, program tarafından da hesaplanabilir
Bu sayfanın kaynağındaki HTML kodları ise şöyla olacaktır:
<HTML>
<HEAD>
<TITLE>PHP'de Fonksiyon</TITLE>
<meta http-equiv="content-type" ***********"text/html; charset=ISO-8859-9">
<meta http-equiv="Content-Type" ***********"text/html; charset=windows-1254">
</HEAD>
<BODY>
17<br>7<br>60<br>2.4<br>
</BODY>
</HTML>
Fonksiyonlarımız, kendilerinden bekleneni yaparak, gerekenhesaplamanın sonucunu, kendilerini göreve çağıran komuta, buradaPHP'nin
print() fonksiyona göndermiş; bu fonksiyon da sadece bu sonuçları Browser'a iletmiş bulunuyor.