<?php
// label in function Salt syntax
// is not type juste for best read
$rt = myfunction(
bar_bar: 10,
foo_foo: 5
);
var_dump($rt);
function myfunction($bar_bar, $foo_foo): int
{
return $bar_bar + $foo_foo;
}
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
'danZ
'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.
<?php
// label in function Salt syntax
// is not type juste for best read
$rt = myfunction(
bar_bar: 10,
foo_foo: 5
);
var_dump($rt);
function myfunction($bar_bar, $foo_foo): int
{
return $bar_bar + $foo_foo;
}
<?php
//variable-length argument list with variable number arguments & default arguments.
function myName1($b,...$a){
print_r($a);//Array ( [0] => Bar [1] => Baz )
echo "<br>";
echo $b;//Foo
}
$x = "Foo";
$y = "Bar";
$z = "Baz";
myName1($x,$y,$z);
echo "<br>";
function myName2($b="John",...$a){
print_r($a);//Array ( [0] => Bar [1] => Baz )
echo "<br>";
echo $b;//Foo
}
$x = "Foo";
$y = "Bar";
$z = "Baz";
myName2($x,$y,$z);
echo "<br>";
?>