2015-01-02 5 views
3

Я имею дело с остановкой конструктора.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 
} 

Есть функция для остановки/выхода конструктора:

умереть(), выход(), перерыв() и возвращение ложным

Я использую возврат false, но я запутался в безопасности. Каков наилучший способ выхода из конструктора?

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

+7

Выбросить исключение –

+0

Я не использую перед броском. не могли бы вы привести мне пример? @MarkBaker – EngineerCoder

+3

'' 'throw new Exception ('Выход из конструктора');' '' – mend3

ответ

5

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

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

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 
} 

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

Смежные вопросы