безопасность — PHP Лучший способ остановить конструктор

Я имею дело с остановкой конструктора.

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, но меня смущает безопасность. Какой лучший способ выйти из конструктора?

Спасибо за ваше время.

3

Решение

Полный пример, потому что вопросы должны иметь принятый ответ:

Создайте исключение в конструкторе следующим образом:

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
}

Если по какой-либо причине вы нигде не поймаете ошибку, это приведет к фатальному исключению, которое приведет к сбою всей страницы, что объяснит, что вам «не удалось поймать исключение», и покажет вам сообщение.

6

Другие решения

Других решений пока нет …