PHP’ de __invoke() Sihirli Metodu
Php’ de işlerimizi kolaylaştıracak çeşitli sihirli(magic) metodlar vardır. Sihirli metodlar iki alt tire(__construct, __invoke) ile başlarlar. Bu yazıda PHP’ de sıklıkla kullanılan __invoke() metodunu ve kullanımını anlatacağım.
__invoke() :
__invoke metodu sınıf(class) içinde tanımlayacağımız bir metoddur. Sınıftan bir obje ürettikten sonra objeyi fonksiyon gibi çağırırsak çağrılacak metod __invoke() metodudur.
Örnek:
İlk önce Car adında bir sınıf tanımlayacağız.
class Car{
public function __construct(){
echo "object created <br>";
}
public function __invoke(){
echo "invoke method called";
}
}Bu sınıftan bir obje üretelim. Obje ürettiğimizde __construct metodu çalışacak. Daha sonra objeyi fonksiyon olarak çağırırsak __invoke metodu çalışacaktır.
$obj = new Car(); $obj(); //Çıktı: object created //Çıktı: invoke method called
Objenin callable olup olmadığını çağırmadan önce is_callable() fonksiyonu ile kontrol edebiliriz.
echo is_callable($obj) ? 'yes' : 'no'; //Çıktı : yes
Callable Typehint
Callable typehint çağrılan şeyin callable olup olmadığını kontrol ederek çalıştırılmasını sağlar. PHP 5.4 ile birlikte gelmiştir. Aşağıda __invoke sihirli metodla nasıl kullanıldığına dair bir kullanım göreceksiniz.
function start_engine(Callable $func) {
$func();
return "engine started";
}
$obj = new Car();
echo start_engine($obj);
//Çıktı: object created
//Çıktı: invoke method called
//Çıktı: engine startedBaşarılar Dilerim …