Kullanıcı tanımlı işlevler
Bir işlev, şöyle bir söz dizimi kullanılarak tanımlanabilir:
Örnek 1 - İşlev kullanımını gösteren sözde kod
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Örnek işlev.\n";
return $retval;
}
?>
Bir işlevin içerisinde geçerli her tür PHP kodu kullanılabilir, buna
başka işlevler ve sınıf
tanımları da dahildir.
İşlev isimleri, PHP'deki diğer isimlerle aynı kurallara tabidir. Geçerli
bir işlev ismi bir harf ya da alt çizgi ile başlar, herhangi bir sayıda
geçerli harf, sayı ya da alt çizgi ile devam eder. Düzenli ifade olarak,
şu şekilde ifade edebiliriz:
^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
.
İşlevlerin çağrılmadan önce tanımlanmaları, aşağıdaki iki örnekte
görüldüğü gibi koşullu olarak tanımlandıkları durumlar haricinde
gerekmez.
Bir işlev aşağıdaki iki örnekte gösterildiği gibi koşullu olarak
tanımlandıysa, bu işlev tanımının işlev çağrılmadan
önce yapılması gerekmektedir.
Örnek 2 - Koşula bağlı işlevler
<?php
$makefoo = true;
/* Henüz varolmadığı için foo() buradan çağrılamaz,
ancak bar() çağrılabilir */
bar();
if ($makefoo) {
function foo()
{
echo "Uygulamanın çalışması bana erişene kadar ben yokum.\n";
}
}
/* $makefoo doğru olduğundan
artık foo() çağrılabilir */
if ($makefoo) foo();
function bar()
{
echo "Program başlatıldığı anda ben de varolurum.\n";
}
?>
Örnek 3 - İşlev içinde işlev
<?php
function foo()
{
function bar()
{
echo "foo() çağrılana kadar yokum.\n";
}
}
/* Henüz varolmadığı için
bar() çağrılamaz. */
foo();
/* Artık bar() çağrılabilir,
foo() çağrıldığında bar()
erişilebilir hale gelir */
bar();
?>
PHP'de tüm işlevler ve sınıflar betik genelinde geçerlidir - bir işlevin
içinden tanımlanmış olsalar bile işlevin dışından çağrılabilirler.
PHP işlevlerin farklı bağımsız değişkenli yeni tanımlarının yapılmasını
desteklemediği gibi, işlevler yeniden tanımlanamaz veya tanımsız
kılınamaz.
Bilginize:
İşlev isimleri A
'dan Z
'ye kadar
ASCII karakterler için büyük-küçük harf duyarsızdır, ancak işlev
isimlerini tanımlandıkları halleriyle kullanmak daha iyidir.
Bağımsız değişken sayısı değişken
işlevler desteklendiği gibi işlevlerde öntanımlı bağımsız değişken
kullanımı da desteklenmektedir. Daha ayrıntılı bilgi edinmek için
func_num_args(), func_get_arg() ve
func_get_args() işlevlerine de bakınız.
PHP'de işlevlerin kendilerini çağırması da mümkündür.
Örnek 4 - Kendini çağıran işlev
<?php
function recursion($a)
{
if ($a < 20) {
echo "$a\n";
recursion($a + 1);
}
}
?>
Bilginize:
Kendini çağıran işlev ve yöntemler bunu 100-200 kere yaparsa yığıt
taşabilir ve çalışan betiğin durdurulmasına sebep olabilir. Özellikle,
kendini çağırma sayısı sonsuza giderse bu bir programlama hatası
sayılır.