mixed
mixed anahtar sözcüğü, bir değiştirgenin çok sayıda tür (ama hepsini değil) kabul edebileceğini belirtir.
Örneğin, str_replace() işlevi sadece string veya array türünde değer kabul ederken, gettype() işlevi tüm PHP türlerini kabul eder.
number
number anahtar sözcüğü, bir değiştirgenin integer veya float türünde değer kabul edeceğini belirtir.
callback
call_user_func(), usort() gibi işlevler değiştirge olarak kullanıcı tanımlı geriçağırım işlevlerini kabul ederler. Geriçağırım işlevleri her zaman basit işlevler olmayabilir, nesne yöntemleri ve hatta duruk sınıf yöntemleri bile olabilirler.
Bir PHP işlevi, string türündeki ismiyle aktarılır. Şu dil oluşumları dışında herhangi bir yerleşik veya kullanıcı tanımlı işlev kullanılabilir: array(), echo, empty(), eval(), exit(), isset(), list(), print veya unset().
Örneklenmiş bir nesnenin bir yöntemi, nesnenin ismi 0. indiste, yöntem ismi 1. indiste yer alan bir dizi olarak aktarılır.
Duruk sınıf yöntemleri de sınıf ismi 0. indiste içerilerek, sınıf bir nesne olarak örneklenmeksizin aktarılabilir.
create_function() işlevi bildik kullanıcı tanımlı işlevlerden başka, bir anonim geriçağırım işlevi oluşturmak için de kullanılabilir. PHP 5.3.0'dan itibaren işleve değiştirge olarak bir anonim işlev aktarmak mümkün oldu.
Örnek 1 - Geriçağırım işlevi örnekleri
<?php
// Bir geriçağırım işlevi örneği
function geriçağırım_işlevim() {
echo 'merhaba dünya!';
}
// Bir geriçağırım yöntemi örneği
class Sınıfım {
static function geriçağırımYöntemim() {
echo 'Merhaba Dünya!';
}
}
// 1. tür: Basit geriçağırım
call_user_func('geriçağırım_işlevim');
// 2. tür: Duruk sınıf yöntemi çağrısı
call_user_func(array('Sınıfım', 'geriçağırımYöntemim'));
// 3. tür: Nesne yöntemi çağrısı
$nesne = new Sınıfım();
call_user_func(array($nesne, 'geriçağırımYöntemim'));
// 4. tür: Duruk sınıf yöntemi çağrısı (PHP 5.2.3 ve sonrası)
call_user_func('Sınıfım::geriçağırımYöntemim');
// 5. tür: Göreli duruk sınıf yöntemi çağrısı (PHP 5.2.3 ve sonrası)
class A {
public static function kimsin() {
echo "A\n";
}
}
class B extends A {
public static function kimsin() {
echo "B\n";
}
}
call_user_func(array('B', 'parent::kimsin')); // A
?>
Örnek 2 - Anonim işlev kullanan bir geriçağırım işlevi örneği
<?php
// Anonim işlevimiz
$double = function($a) {
return $a * 2;
};
// Sayı aralığımız
$numbers = range(1, 5);
// Aralık içindeki her elemanın boyutunu
// ikiye katlamak için geriçağırım işlevi
// olarak burada anonim bir işlev kullanalım
$new_numbers = array_map($double, $numbers);
print implode(' ', $new_numbers);
?>
Yukarıdaki örneğin çıktısı:
2 4 6 8 10
Bilginize: PHP4'te, kopyayı değil de asıl nesneyi işaret eden bir geriçağırım oluşturmak için gönderim kullanmak gerekir. Daha fazla bilgi için Gönderimler Hakkında bölümüne bakınız.
Bilginize:
call_user_func() ve call_user_func_array() gibi işlevlerle kayıt altına alınmış geriçağırım işlevleri, bir önceki geriçağırım işlevinde oluşmuş ve yakalanmamış bir istisna varsa çağrılmaz.
void
void bir dönüş türü olarak dönüş değerinin yararsız olduğu anlamına gelir. void bir değiştirge listesinde kullanıldığında işlevin değiştirge kabul etmediği anlamına gelir.
$...
değiştirgesi işlev bildirimlerinde
"ve benzerleri" anlamına gelir. Bu değişken ismi bir
işlevde kullanıldığında işlev sonsuz sayıda değiştirge alabilir.