PHP is_callable() Fonksiyonu
PHP 4PHP 5PHP 7
Bir değişkenin değerinin çağırılabilir bir fonksiyon ya da metod olup olmadığını kontrol eder.
Yapısı (Syntax)is_callable ( mixed $var [, bool $syntax_only = FALSE [, string &$callable_name ]] ) : bool
Parametreler
-
$var mixedKontrol edilecek değişken
-
syntax_only = false booleanEğer true olarak belirlenirse, kontrol işlemi sadece belirtilen fonksiyonun fonksiyon ya da method olup olmadığını kontrol eder.
-
$callable_name stringKontrol edilen değişkenin çağırılabilir fonksiyon ya da method ismini alır.
Dönen Değer
boolean
- Eğer kontrol edilen parametre çağırılabilir bir fonksiyon ise TRUE, değil ise FALSE dönecektir.
Örnekler
En basit örneği ile bir değişkenin değerinin çağırılabilir olup olmadığını kontrol edelim.
<?php
function test(){}
$degisken = 'test';
var_dump(is_callable($degisken)); // Çıktı: bool(true)
// Yani $degisken değerindeki 'test' çağırılabilir bir fonksiyondur.
?>
Sadece değişken içeriğinin fonksiyon ya da metoda uygun olup olmadığını kontrol edelim.
<?php
$degisken = 'test';
var_dump(is_callable($degisken, true)); // Çıktı: bool(true)
// Yine true değerini döndürmesinin sebebi, $degisken değerinin fonksiyon ya da metod ismine uygun olmasından.
// Normalde öyle bir fonksiyonun olup olmadığını kontrol etmedi, 2. parametre sayesinde sadece geçerliliğini kontrol etti.
// Örneğin alttaki örnekte sadece sayı ile metod ya da fonksiyon tanımlanamayacağı için false döner.
$degisken2 = 13;
var_dump(is_callable($degisken2, true)); // Çıktı: bool(false)
?>
Şimdide 3. parametre için bir örnek verelim.
<?php
$degisken = 'test';
var_dump(is_callable($degisken, false, $funcName)); // Çıktı: bool(false)
// Çünkü test adında çağırılabilir bir fonksiyon ya da metod yok
echo $funcName; // Çıktı: test
// Burada sadece ilgili değişkenin içerdiği değeri döndürür.
?>
Sınıf içerisindeki metodlarda kullanımı ise şöyledir.
<?php
class testSinif {
function testMetod(){}
}
$degisken = [new testSinif(), 'testMetod'];
var_dump(is_callable($degisken)); // Çıktı: bool(true)
// testSinif sınıfı içerisinde testMetod çağırılabilir bir metod olduğu için true döndü.
is_callable($degisken, false, $metodAdi);
echo $metodAdi; // Çıktı: testSinif::testMetod
?>