CRL
Новичок
Создание объекта: фатальная ошибка и её обработка.
Имеется интерфейс:
Имеется реализация:
Мысль такова - я предполагаю, что заранее мне неизвестно, будет ли реализация синглтоном или нет. Поэтому, я пытаюсь сделать такую проверку:
- возникает фатальная ошибка, и здесь она не обрабатывается.
Вариант, как у Котерова:
- результат тот же - необрабатываемая фатальная ошибка.
Отсюда возникла мысль - а вообще правильный ли это подход? Нужна ли вообще эта проверка? Если нужна, то как её реализовать? Если не нужна, как разрешить ситуацию с неизвестным заранее вариантом (синглтонным\несинглтонным) создания объекта?
Имеется интерфейс:
PHP:
interface iface
{
public function method($index);
}
PHP:
class realm implements iface
{
PRIVATE
static $instance;
private function __construct()
{
}
public static function construct()
{
if(!isset(self::$instance))
{
$mirror = __CLASS__;
self::$instance = new $mirror;
}
return self::$instance;
}
public function method($index)
{
return "Вызов публичного метода method() с индексом {$index}";
}
public function __clone()
{
trigger_error('Клонирование запрещено.', E_USER_ERROR);
}
PHP:
@$sys = new realm;
if(is_object($sys) === false)
{
$sys = realm::construct();
}
print $sys->method(1);
Вариант, как у Котерова:
PHP:
function err_handler($errno, $msg, $file, $line)
{
$sys = realm::construct();
};
set_error_handler("err_handler", E_ALL);
$sys = new realm;
Отсюда возникла мысль - а вообще правильный ли это подход? Нужна ли вообще эта проверка? Если нужна, то как её реализовать? Если не нужна, как разрешить ситуацию с неизвестным заранее вариантом (синглтонным\несинглтонным) создания объекта?