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 started
Başarılar Dilerim …