Categorie
PHP

PHP – Callable Type hint

Il type hinting è una funzionalità introdotta con PHP 5 che serve a forzare i parametri di una funzione o un metodo perchè siano un array, un’istanza di una classe specifica oppure un callback valido.

Con PHP 5 è stato introdotto il type hinting, cioè una funzionalità che permette di forzare i parametri ad essere un qualcosa come… un array, un oggetto o un’interfaccia.
Da PHP 5.4 è stato aggiunto un nuovo type hinting, il callable cioè un qualunque callback valido (funzione, closure, oggetto invocabile etc..).

Un esempio come al solito ci schiarisce le idee:

<?php
class MyClass
{
    //Il primo parametro deve essere un callable
    function test_callable(callable $callback, $data) {
        call_user_func($callback, $data);
    }
}

function callback($data) {
    echo $data;
}

$o = new MyClass();
$o->test_callable('callback', 'foo'); //foo
?>

Molto semplice, il primo parametro del metodo test_callable deve essere un callback valido. Se, per esempio, tentassimo di passare una stringa, riceveremo un messaggio simile a questo:

Catchable fatal error: Argument 1 passed to MyClass::test_callable() must be callable, string given…

Usando un oggetto come funzione

Possiamo anche passare un oggetto come callable, infatti dichiarando nella classe il metodo magico __invoke forziamo una sua istanza a comportarsi come una funzione:

<?php
function myFun(callable $func) {
  $func();
  return " world!";
}

class CallableClass
{
    public function __invoke()
    {
        echo 'Hello,';
    }
}

$o = new CallableClass();
echo myFun($o); //Hello, world!
?>

Risorse

php.net/manual/en/language.oop5.typehinting.php

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.