PageRenderTime 58ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/.vim/manuals/php/function.set-error-handler.html

https://bitbucket.org/fally/configs
HTML | 369 lines | 308 code | 61 blank | 0 comment | 0 complexity | 0c97cc02410369786404a782b1598c21 MD5 | raw file
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <title>Sets a user-defined error handler function</title>
  5. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  6. </head>
  7. <body><div style="text-align: center;">
  8. <div class="prev" style="text-align: left; float: left;"><a href="function.restore-exception-handler.html">restore_exception_handler</a></div>
  9. <div class="next" style="text-align: right; float: right;"><a href="function.set-exception-handler.html">set_exception_handler</a></div>
  10. <div class="up"><a href="ref.errorfunc.html">Error Handling Functions</a></div>
  11. <div class="home"><a href="index.html">PHP Manual</a></div>
  12. </div><hr /><div id="function.set-error-handler" class="refentry">
  13. <div class="refnamediv">
  14. <h1 class="refname">set_error_handler</h1>
  15. <p class="verinfo">(PHP 4 &gt;= 4.0.1, PHP 5)</p><p class="refpurpose"><span class="refname">set_error_handler</span> &mdash; <span class="dc-title">Sets a user-defined error handler function</span></p>
  16. </div>
  17. <div class="refsect1 description">
  18. <h3 class="title">Description</h3>
  19. <div class="methodsynopsis dc-description">
  20. <span class="type"><a href="language.pseudo-types.html#language.types.mixed" class="type mixed">mixed</a></span> <span class="methodname"><b><b>set_error_handler</b></b></span>
  21. ( <span class="methodparam"><span class="type"><a href="language.pseudo-types.html#language.types.callback" class="type callback">callback</a></span> <tt class="parameter">$error_handler</tt></span>
  22. [, <span class="methodparam"><span class="type">int</span> <tt class="parameter">$error_types</tt></span>
  23. ] )</div>
  24. <p class="para rdfs-comment">
  25. Sets a user function (<i><tt class="parameter">error_handler</tt></i>
  26. ) to handle
  27. errors in a script.
  28. </p>
  29. <p class="para">
  30. This function can be used for defining your own way of handling errors
  31. during runtime, for example in applications in which you need to do
  32. cleanup of data/files when a critical error happens, or when you need
  33. to trigger an error under certain conditions (using
  34. <a href="function.trigger-error.html" class="function">trigger_error()</a>).
  35. </p>
  36. <p class="para">
  37. It is important to remember that the standard PHP error handler is completely
  38. bypassed. <a href="function.error-reporting.html" class="function">error_reporting()</a> settings will have no effect
  39. and your error handler will be called regardless - however you are still
  40. able to read the current value of <a href="errorfunc.configuration.html#ini.error-reporting" class="link">error_reporting</a> and
  41. act appropriately. Of particular note is that this value will be 0 if the
  42. statement that caused the error was prepended by the
  43. <a href="language.operators.errorcontrol.html" class="link">@ error-control
  44. operator</a>.
  45. </p>
  46. <p class="para">
  47. Also note that it is your responsibility to <a href="function.die.html" class="function">die()</a> if
  48. necessary. If the error-handler function returns, script execution
  49. will continue with the next statement after the one that caused an error.
  50. </p>
  51. <p class="para">
  52. The following error types cannot be handled with a user defined
  53. function: <b><tt>E_ERROR</tt></b>, <b><tt>E_PARSE</tt></b>,
  54. <b><tt>E_CORE_ERROR</tt></b>, <b><tt>E_CORE_WARNING</tt></b>,
  55. <b><tt>E_COMPILE_ERROR</tt></b>,
  56. <b><tt>E_COMPILE_WARNING</tt></b>, and
  57. most of <b><tt>E_STRICT</tt></b> raised in the file where
  58. <b>set_error_handler()</b> is called.
  59. </p>
  60. <p class="para">
  61. If errors occur before the script is executed (e.g. on file uploads) the
  62. custom error handler cannot be called since it is not registered at that
  63. time.
  64. </p>
  65. </div>
  66. <div class="refsect1 parameters">
  67. <h3 class="title">Parameters</h3>
  68. <p class="para">
  69. <dl>
  70. <dt>
  71. <span class="term"><i><tt class="parameter">error_handler</tt></i>
  72. </span>
  73. <dd>
  74. <p class="para">
  75. The user function needs to accept two parameters: the error code, and a
  76. string describing the error. Then there are three optional parameters
  77. that may be supplied: the filename in which the error occurred, the
  78. line number in which the error occurred, and the context in which the
  79. error occurred (an array that points to the active symbol table at the
  80. point the error occurred). The function can be shown as:
  81. </p>
  82. <p class="para">
  83. <div class="methodsynopsis dc-description">
  84. <span class="methodname"><b><span class="replaceable">handler</span></b></span>
  85. ( <span class="methodparam"><span class="type">int</span> <tt class="parameter">$errno</tt></span>
  86. , <span class="methodparam"><span class="type">string</span> <tt class="parameter">$errstr</tt></span>
  87. [, <span class="methodparam"><span class="type">string</span> <tt class="parameter">$errfile</tt></span>
  88. [, <span class="methodparam"><span class="type">int</span> <tt class="parameter">$errline</tt></span>
  89. [, <span class="methodparam"><span class="type">array</span> <tt class="parameter">$errcontext</tt></span>
  90. ]]] )</div>
  91. <dl>
  92. <dt>
  93. <span class="term"><i><tt class="parameter">errno</tt></i>
  94. </span>
  95. <dd>
  96. <span class="simpara">
  97. The first parameter, <i><tt class="parameter">errno</tt></i>
  98. , contains the
  99. level of the error raised, as an integer.
  100. </span>
  101. </dd>
  102. </dt>
  103. <dt>
  104. <span class="term"><i><tt class="parameter">errstr</tt></i>
  105. </span>
  106. <dd>
  107. <span class="simpara">
  108. The second parameter, <i><tt class="parameter">errstr</tt></i>
  109. , contains the
  110. error message, as a string.
  111. </span>
  112. </dd>
  113. </dt>
  114. <dt>
  115. <span class="term"><i><tt class="parameter">errfile</tt></i>
  116. </span>
  117. <dd>
  118. <span class="simpara">
  119. The third parameter is optional, <i><tt class="parameter">errfile</tt></i>
  120. ,
  121. which contains the filename that the error was raised in, as a string.
  122. </span>
  123. </dd>
  124. </dt>
  125. <dt>
  126. <span class="term"><i><tt class="parameter">errline</tt></i>
  127. </span>
  128. <dd>
  129. <span class="simpara">
  130. The fourth parameter is optional, <i><tt class="parameter">errline</tt></i>
  131. ,
  132. which contains the line number the error was raised at, as an integer.
  133. </span>
  134. </dd>
  135. </dt>
  136. <dt>
  137. <span class="term"><i><tt class="parameter">errcontext</tt></i>
  138. </span>
  139. <dd>
  140. <span class="simpara">
  141. The fifth parameter is optional, <i><tt class="parameter">errcontext</tt></i>
  142. ,
  143. which is an array that points to the active symbol table at the point
  144. the error occurred. In other words, <i><tt class="parameter">errcontext</tt></i>
  145. will contain an array of every variable that existed in the scope the
  146. error was triggered in.
  147. User error handler must not modify error context.
  148. </span>
  149. </dd>
  150. </dt>
  151. </dl>
  152. </p>
  153. <p class="para">
  154. If the function returns <b><tt>FALSE</tt></b> then the normal error handler continues.
  155. </p>
  156. </dd>
  157. </dt>
  158. <dt>
  159. <span class="term"><i><tt class="parameter">error_types</tt></i>
  160. </span>
  161. <dd>
  162. <p class="para">
  163. Can be used to mask the triggering of the
  164. <i><tt class="parameter">error_handler</tt></i>
  165. function just like the <a href="errorfunc.configuration.html#ini.error-reporting" class="link">error_reporting</a> ini setting
  166. controls which errors are shown. Without this mask set the
  167. <i><tt class="parameter">error_handler</tt></i>
  168. will be called for every error
  169. regardless to the setting of the <a href="errorfunc.configuration.html#ini.error-reporting" class="link">error_reporting</a> setting.
  170. </p>
  171. </dd>
  172. </dt>
  173. </dl>
  174. </p>
  175. </div>
  176. <div class="refsect1 returnvalues">
  177. <h3 class="title">Return Values</h3>
  178. <p class="para">
  179. Returns a string containing the previously defined
  180. error handler (if any), or <b><tt>NULL</tt></b> on error. If the previous handler
  181. was a class method, this function will return an indexed array with
  182. the class and the method name.
  183. </p>
  184. </div>
  185. <div class="refsect1 changelog">
  186. <h3 class="title">ChangeLog</h3>
  187. <p class="para">
  188. <table class="informaltable">
  189. <colgroup>
  190. <thead valign="middle">
  191. <tr valign="middle">
  192. <th colspan="1">Version</th>
  193. <th colspan="1">Description</th>
  194. </tr>
  195. </thead>
  196. <tbody valign="middle" class="tbody">
  197. <tr valign="middle">
  198. <td colspan="1" rowspan="1" align="left">5.2.0</td>
  199. <td colspan="1" rowspan="1" align="left">
  200. The error handler must return <b><tt>FALSE</tt></b> to populate <a href="reserved.variables.phperrormsg.html" class="link">$php_errormsg</a>.
  201. </td>
  202. </tr>
  203. <tr valign="middle">
  204. <td colspan="1" rowspan="1" align="left">5.0.0</td>
  205. <td colspan="1" rowspan="1" align="left">
  206. The <i><tt class="parameter">error_types</tt></i>
  207. parameter was introduced.
  208. </td>
  209. </tr>
  210. <tr valign="middle">
  211. <td colspan="1" rowspan="1" align="left">4.3.0</td>
  212. <td colspan="1" rowspan="1" align="left">
  213. Instead of a function name, an array containing an object reference
  214. and a method name can also be supplied as the
  215. <i><tt class="parameter">error_handler</tt></i>
  216. .
  217. </td>
  218. </tr>
  219. <tr valign="middle">
  220. <td colspan="1" rowspan="1" align="left">4.0.2</td>
  221. <td colspan="1" rowspan="1" align="left">
  222. Three optional parameters for the <i><tt class="parameter">error_handler</tt></i>
  223. user function was introduced. These are the filename, the line number,
  224. and the context.
  225. </td>
  226. </tr>
  227. </tbody>
  228. </colgroup>
  229. </table>
  230. </p>
  231. </div>
  232. <div class="refsect1 examples">
  233. <h3 class="title">Examples</h3>
  234. <p class="para">
  235. <div class="example">
  236. <p><b>Example #1 Error handling with <b>set_error_handler()</b> and <a href="function.trigger-error.html" class="function">trigger_error()</a></b></p>
  237. <div class="example-contents"><p>
  238. The example below shows the handling of internal exceptions by
  239. triggering errors and handling them with a user defined function:
  240. </p></div>
  241. <div class="example-contents">
  242. <div class="phpcode"><code><span style="color: #000000">
  243. <span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">//&nbsp;error&nbsp;handler&nbsp;function<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">myErrorHandler</span><span style="color: #007700">(</span><span style="color: #0000BB">$errno</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$errstr</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$errfile</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$errline</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(</span><span style="color: #0000BB">$errno</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">E_USER_ERROR</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"&lt;b&gt;My&nbsp;ERROR&lt;/b&gt;&nbsp;[$errno]&nbsp;$errstr&lt;br&nbsp;/&gt;\n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"&nbsp;&nbsp;Fatal&nbsp;error&nbsp;on&nbsp;line&nbsp;$errline&nbsp;in&nbsp;file&nbsp;$errfile"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">",&nbsp;PHP&nbsp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">PHP_VERSION&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"&nbsp;("&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">PHP_OS&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">")&lt;br&nbsp;/&gt;\n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"Aborting...&lt;br&nbsp;/&gt;\n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">E_USER_WARNING</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"&lt;b&gt;My&nbsp;WARNING&lt;/b&gt;&nbsp;[$errno]&nbsp;$errstr&lt;br&nbsp;/&gt;\n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #0000BB">E_USER_NOTICE</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"&lt;b&gt;My&nbsp;NOTICE&lt;/b&gt;&nbsp;[$errno]&nbsp;$errstr&lt;br&nbsp;/&gt;\n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"Unknown&nbsp;error&nbsp;type:&nbsp;[$errno]&nbsp;$errstr&lt;br&nbsp;/&gt;\n"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;Don't&nbsp;execute&nbsp;PHP&nbsp;internal&nbsp;error&nbsp;handler&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">//&nbsp;function&nbsp;to&nbsp;test&nbsp;the&nbsp;error&nbsp;handling<br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">scale_by_log</span><span style="color: #007700">(</span><span style="color: #0000BB">$vect</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$scale</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #0000BB">is_numeric</span><span style="color: #007700">(</span><span style="color: #0000BB">$scale</span><span style="color: #007700">)&nbsp;||&nbsp;</span><span style="color: #0000BB">$scale&nbsp;</span><span style="color: #007700">&lt;=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">trigger_error</span><span style="color: #007700">(</span><span style="color: #DD0000">"log(x)&nbsp;for&nbsp;x&nbsp;&lt;=&nbsp;0&nbsp;is&nbsp;undefined,&nbsp;you&nbsp;used:&nbsp;scale&nbsp;=&nbsp;$scale"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">E_USER_ERROR</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #0000BB">is_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$vect</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">trigger_error</span><span style="color: #007700">(</span><span style="color: #DD0000">"Incorrect&nbsp;input&nbsp;vector,&nbsp;array&nbsp;of&nbsp;values&nbsp;expected"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">E_USER_WARNING</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">null</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$temp&nbsp;</span><span style="color: #007700">=&nbsp;array();<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach(</span><span style="color: #0000BB">$vect&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$pos&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$value</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #0000BB">is_numeric</span><span style="color: #007700">(</span><span style="color: #0000BB">$value</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">trigger_error</span><span style="color: #007700">(</span><span style="color: #DD0000">"Value&nbsp;at&nbsp;position&nbsp;$pos&nbsp;is&nbsp;not&nbsp;a&nbsp;number,&nbsp;using&nbsp;0&nbsp;(zero)"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">E_USER_NOTICE</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$value&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$temp</span><span style="color: #007700">[</span><span style="color: #0000BB">$pos</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">log</span><span style="color: #007700">(</span><span style="color: #0000BB">$scale</span><span style="color: #007700">)&nbsp;*&nbsp;</span><span style="color: #0000BB">$value</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$temp</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">//&nbsp;set&nbsp;to&nbsp;the&nbsp;user&nbsp;defined&nbsp;error&nbsp;handler<br /></span><span style="color: #0000BB">$old_error_handler&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">set_error_handler</span><span style="color: #007700">(</span><span style="color: #DD0000">"myErrorHandler"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">//&nbsp;trigger&nbsp;some&nbsp;errors,&nbsp;first&nbsp;define&nbsp;a&nbsp;mixed&nbsp;array&nbsp;with&nbsp;a&nbsp;non-numeric&nbsp;item<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">"vector&nbsp;a\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$a&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"foo"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">5.5</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">43.3</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">21.11</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">//&nbsp;now&nbsp;generate&nbsp;second&nbsp;array<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">"----\nvector&nbsp;b&nbsp;-&nbsp;a&nbsp;notice&nbsp;(b&nbsp;=&nbsp;log(PI)&nbsp;*&nbsp;a)\n"</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">/*&nbsp;Value&nbsp;at&nbsp;position&nbsp;$pos&nbsp;is&nbsp;not&nbsp;a&nbsp;number,&nbsp;using&nbsp;0&nbsp;(zero)&nbsp;*/<br /></span><span style="color: #0000BB">$b&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">scale_by_log</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">M_PI</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$b</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">//&nbsp;this&nbsp;is&nbsp;trouble,&nbsp;we&nbsp;pass&nbsp;a&nbsp;string&nbsp;instead&nbsp;of&nbsp;an&nbsp;array<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">"----\nvector&nbsp;c&nbsp;-&nbsp;a&nbsp;warning\n"</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">/*&nbsp;Incorrect&nbsp;input&nbsp;vector,&nbsp;array&nbsp;of&nbsp;values&nbsp;expected&nbsp;*/<br /></span><span style="color: #0000BB">$c&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">scale_by_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"not&nbsp;array"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2.3</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$c</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//&nbsp;NULL<br /><br />//&nbsp;this&nbsp;is&nbsp;a&nbsp;critical&nbsp;error,&nbsp;log&nbsp;of&nbsp;zero&nbsp;or&nbsp;negative&nbsp;number&nbsp;is&nbsp;undefined<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">"----\nvector&nbsp;d&nbsp;-&nbsp;fatal&nbsp;error\n"</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">/*&nbsp;log(x)&nbsp;for&nbsp;x&nbsp;&lt;=&nbsp;0&nbsp;is&nbsp;undefined,&nbsp;you&nbsp;used:&nbsp;scale&nbsp;=&nbsp;$scale"&nbsp;*/<br /></span><span style="color: #0000BB">$d&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">scale_by_log</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">,&nbsp;-</span><span style="color: #0000BB">2.5</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$d</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//&nbsp;Never&nbsp;reached<br /></span><span style="color: #0000BB">?&gt;</span>
  244. </span>
  245. </code></div>
  246. </div>
  247. <div class="example-contents"><p>The above example will output
  248. something similar to:</p></div>
  249. <div class="example-contents"><pre>
  250. <div class="cdata"><pre>
  251. vector a
  252. Array
  253. (
  254. [0] =&gt; 2
  255. [1] =&gt; 3
  256. [2] =&gt; foo
  257. [3] =&gt; 5.5
  258. [4] =&gt; 43.3
  259. [5] =&gt; 21.11
  260. )
  261. ----
  262. vector b - a notice (b = log(PI) * a)
  263. &lt;b&gt;My NOTICE&lt;/b&gt; [1024] Value at position 2 is not a number, using 0 (zero)&lt;br /&gt;
  264. Array
  265. (
  266. [0] =&gt; 2.2894597716988
  267. [1] =&gt; 3.4341896575482
  268. [2] =&gt; 0
  269. [3] =&gt; 6.2960143721717
  270. [4] =&gt; 49.566804057279
  271. [5] =&gt; 24.165247890281
  272. )
  273. ----
  274. vector c - a warning
  275. &lt;b&gt;My WARNING&lt;/b&gt; [512] Incorrect input vector, array of values expected&lt;br /&gt;
  276. NULL
  277. ----
  278. vector d - fatal error
  279. &lt;b&gt;My ERROR&lt;/b&gt; [256] log(x) for x &lt;= 0 is undefined, you used: scale = -2.5&lt;br /&gt;
  280. Fatal error on line 35 in file trigger_error.php, PHP 5.2.1 (FreeBSD)&lt;br /&gt;
  281. Aborting...&lt;br /&gt;
  282. </pre></div>
  283. </pre></div>
  284. </div>
  285. </p>
  286. </div>
  287. <div class="refsect1 seealso">
  288. <h3 class="title">See Also</h3>
  289. <p class="para">
  290. <ul class="simplelist">
  291. <li class="member"><a href="function.error-reporting.html" class="function" rel="rdfs-seeAlso">error_reporting()</a></li>
  292. <li class="member"><a href="function.restore-error-handler.html" class="function" rel="rdfs-seeAlso">restore_error_handler()</a></li>
  293. <li class="member"><a href="function.trigger-error.html" class="function" rel="rdfs-seeAlso">trigger_error()</a></li>
  294. <li class="member"><a href="errorfunc.constants.html" class="link">error level constants</a></li>
  295. <li class="member">information about the <a href="language.pseudo-types.html#language.types.callback" class="link">callback</a> type</li>
  296. </ul>
  297. </p>
  298. </div>
  299. </div><hr /><div style="text-align: center;">
  300. <div class="prev" style="text-align: left; float: left;"><a href="function.restore-exception-handler.html">restore_exception_handler</a></div>
  301. <div class="next" style="text-align: right; float: right;"><a href="function.set-exception-handler.html">set_exception_handler</a></div>
  302. <div class="up"><a href="ref.errorfunc.html">Error Handling Functions</a></div>
  303. <div class="home"><a href="index.html">PHP Manual</a></div>
  304. </div></body></html>