ramzes, Конструктор не должен ничего возвращать. Независимо от того, есть там return или нет, всегда будет получен экземпляр класса. Здесь тебе не питон. С метапрограммированием здесь хреновато.
<?php
class A
{
public function __construct()
{
return 1;
}
}
$a = new A();
var_dump($a);
// object(A)#1 (0) {}
var_dump(get_class($a));
// string(1) "A"
var_dump(gettype($a));
// string(6) "object"
var_dump($a->hello());
// string(5) "Hello"