Я имею дело с остановкой конструктора.
public function __construct()
{
$q = explode("?",$_SERVER['REQUEST_URI']);
$this->page = $q[0];
if (isset($q[1]))
$this->querystring = '?'.$q[1];
if ($this->page=='/login') {include_once($_SERVER['DOCUMENT_ROOT'].'/pages/login.php');
// I WANT TO EXIT CONSTRUCTOR HERE
}
Есть функция для остановки / выхода из конструктора:
умереть() , выход(), перерыв() а также вернуть ложь
Я использую return false, но меня смущает безопасность. Какой лучший способ выйти из конструктора?
Спасибо за ваше время.
Полный пример, потому что вопросы должны иметь принятый ответ:
Создайте исключение в конструкторе следующим образом:
class SomeObject {
public function __construct( $allIsGoingWrong ) {
if( $allIsGoingWrong ) {
throw new Exception( "Oh no, all is going wrong! Abort!" );
}
}
}
Затем, когда вы создаете объект, поймайте ошибку следующим образом:
try {
$object = new SomeObject(true);
// if you get here, all is fine and you can use $object
}
catch( Exception $e ) {
// if you get here, something went terribly wrong.
// also, $object is undefined because the object was not created
}
Если по какой-либо причине вы нигде не поймаете ошибку, это приведет к фатальному исключению, которое приведет к сбою всей страницы, что объяснит, что вам «не удалось поймать исключение», и покажет вам сообщение.
Других решений пока нет …