Doprecyzowanie ad. powyższego postu -> konstruktor nic nie zwraca, nawet tworzonego obiektu. Nie da się zablokować tworzenia obiektu na etapie wykonywania, ponieważ konstruktor jest wywoływany, gdy obiekt jako taki już istnieje. Wyjątek powstrzyma jedynie jego zwrócenie przez operator
new, a wrażenie "nieutworzenia" powodowane jest przez to, że najczęściej taki obiekt od razu trafia do odśmiecacza. Jednak wciąż istnieje dla niego możliwość przeżycia i poniżej pokazuję skrypt, który to demonstruje:
<?php
class Foo
{
public $lol;
public function __construct()
{
self::$registry = $this;
$this->lol = 5;
throw new Exception('Nie ma głupich!');
} // end __construct();
}
try
{
$obj = new Foo;
}
catch(Exception $exception)
{
echo Foo
::$registry->lol; }
Natomiast istnieje możliwość kontrolowania samego zachodzenia procesu tworzenia obiektu poprzez zadeklarowanie konstruktora jako metody prywatnej lub chronionej, co zostało już wyżej wspomniane.