案例展示 Case demonstration

秒速赛车客服


PHP5 OOP编程秒速赛车中的代理与异常定制

周期:

服务内容:

简介:正在本文中,你看到了代办是何如把与盘查相接洽的DB接口映照到针对一个特定的盘查结果上的操作。DBQuery对象大白无别的函数,比如fetch_assoc(),举动DB对象。然而,这些都是针对单个

关键词:秒速赛车

网站:

  正在本文中,你看到了代办是何如把与盘查相接洽的DB接口映照到针对一个特定的盘查结果上的操作。DBQuery对象大白无别的函数,比如fetch_assoc(),举动DB对象。然而,这些都是针对单个盘查起效用。你还进修了怎样运用定制分外来给出详明新闻一个纰谬发作正在何时何地,以及它们何如更好地限定纰谬的措置。

  为此,你必要运用代办。秒速赛车究竟上,你正在咱们的DBQuery对象中曾经运用代办了,然而现正在将更为深刻地运用它来把它与MySqlDB对象严密绑定。该DBQuery对象曾经被运用一个达成DB接口的对象初始化,而且它曾经包蕴一个成员函数execute由它移用DB对象的query()伎俩来实行该盘查。这个DBQuery对象自己并不实践地盘查数据库,它把这项义务交由DB对象来实现。这即是代办,原来是一个过程借助于这个过程,通过把新闻发送给另一个达成无别的或相同举动的对象,一个对象可能达成一个希罕的举动。

  假如盘查打击,你必要转移你的execute函数以掷出一个分外。你将掷出一个称为QueryException的定制分外对象导致纰谬的DBQuery对象被通报给它。

  现正在,咱们的DBQuery对象简便地仿效一个存储流程一朝被实行,即返回一个务必举办保管的结果资源;而且假如你思运用该结果集上的函数(比如num_rows()或fetch_row())的话,你务必通报MySqlDB对象。那么,假如由DBQuery对象来达成MySqlDB对象(其打算主意是对一个实行盘查的结果举办操作)达成的函数,成就怎样呢?让咱们延续运用上一篇示例中的代码;而且让咱们假定,现正在由DBQuery对象料理咱们的结果资源。DBQuery类的源码如列外1所示。

  你能够曾经从上面的代码中谨慎到,你缉捕的是一个称为QueryException(咱们将正在后面达成这个对象)的分外。一个分外相同于一个纰谬,然而却更具有大凡性。描画一个分外的最好的伎俩是运用emergency。尽量一个emergency可能不会是“致命的”,然而依然务必措置它。当正在PHP中掷出一个分外时,实行确当前限度很疾地被终止,不管它是一个函数,try..catch块依然剧本自己。然后,该分外遍历移用栈终止每个实行限度,直到或者正在一个try..catch块中缉捕它或者它来到移用栈的顶部此时它将天生一个致命纰谬。

  假如盘查实行打击,它掷出一个QueryException类型的分外。当被转换成一个字符串时,它将返回发作的纰谬的细节新闻。

  /*谨慎现正在咱们若何返回对象自己,这使咱们可能从这个函数的返回结果中移用成员函数

  为此,你必要删改DBQuery对象以便包含一起的函数它们操作一个来自DB对象的结果资源。当实行盘查以移用DB对象的相应函数而且返回它的结果时,你必要运用存储的结果。下列函数将被增添:

  给出盘查纰谬发作所好手代码的无误细节通过查验移用栈。

  /*假如上面的轮回起码实行一次,那么咱们可能把它减1以查找实践的惹起纰谬的代码行

  为了使代办可能任务,咱们必要确保DBQuery对象的$db变量是一个达成了DB接口的对象的实例。类型提示是PHP5中的一种新特性,它可能使你把函数参数强制转换成特定类型的对象。正在PHP5之前,独一简直保函数参数是一个特定对象类型的伎俩是运用PHP中所供给的类型查验函数(也即是is_a())。现正在,你可能简便地强制转换对象类型通过正在函数参数的前面加上类型名。你曾经从咱们的DBQuery对象中看到了类型提示,如此可能确保一个达成DB接口的对象被通报到对象构制器中。

  上面删改后的代码中咱们最感乐趣的是,catch语句和execute语句。

  /*末了,咱们可能修树文献和行号,这应当可能反响出惹起纰谬的SQL语句*/

  正在PHP中,你可能掷出任何对象举动一个分外;然而,最先该分外应当承受自PHP的内置分外类。通过创修你本人的定制分外,你可能记载其它相闭于该纰谬的新闻,比如正在一个日记文献中创修一个入口,或做你喜爱做的任何事件。你的定制分外将要做如下几件事件:

  每个函数的达成相当简便。它首优秀行查验,以确保曾经实行盘查,然后把义务代办到DB对象,返回它的结果就好象它是盘查对象自己(称作是根本数据库函数)相通。

  4.还应当列入一个函数它取得今朝的与DBQuery对象闭联联的DB对象。

  *当试图实行一个盘查时,假如一个纰谬发作,将由{@linkDBQuery}对象掷出纰谬

  execute语句不再返回一个结果资源,现正在它返回DBQuery对象自己。

  显示纰谬新闻和盘查文本当被转换成一个字符串时。

  分外措置是PHP5中的其它一个新特性,当与OOP联用时,它可能达成优良地限定纰谬措置和呈报。一个try..catch块是一种措置分外的紧急机制。一朝被缉捕,剧本将会从分外被缉捕和被措置的代码的下一行延续实行。