PHP最佳停止构造函数的方法是什么?

7

我正在处理停止构造函数。

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
}

有一些函数可以停止/退出构造函数:

die()exit()break()return false

我正在使用return false,但是对于安全性感到困惑。什么是最好的退出构造函数的方法?

感谢您的时间。


7
抛出异常 - Mark Baker
3
抛出一个异常:'Exiting the constructor'。 - mend3
1
您可以在PHP文档中了解有关异常的信息,并且其中还提供了示例。 - Mark Baker
1个回答

15

提供一个完整例子,因为问题应该有一个可接受的答案:

可以在构造函数中这样抛出异常:

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
}

如果由于某种原因您在任何地方都没有捕获到错误,那么它将导致一个致命的异常,并崩溃整个页面,该页面会提示您 “未能捕获异常” 并显示消息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接