2017. szeptember 27., szerda

Szemöldökráncolás és PHP III.

Type hinting

class Task
{
    protected $title;
    protected $complete;

    public function __construct(string $title,
                                bool $isComplete = false)
    {
        $this->title = $title;
        $this->complete = $isComplete;
    }

    public function isComplete(): bool
    {
        return $this->complete;
    }
}

$task = new Task("Go to the store", "false");

var_dump($task->isComplete());

Az eredmény bool(true), ami nem meglepő, hiszen a nem nulla hosszúságú karakterláncok logikai értéke igaz, viszont ami melepő, hogy alapértelmezetten nem akad ki az interpreter. Magunknak kell rendelkeznünk arról, hogy declare(strict_types=1); hogy nehogy ilyen kis BUG forrást vigyünk a rendszerbe...