Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 89346381d9fb64d9ee8827de5f073355 > files > 54

php-pear-HTML_Progress2-2.4.1-3mdv2010.0.noarch.rpm

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>
      Controlling error generation
    </title>
    <link rel="stylesheet" href="book.css" type="text/css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.69.1" />
    <link rel="start" href="index.html" title="HTML_Progress2 Manual" />
    <link rel="up" href="ch16.html" title=
    "Chapter&nbsp;16.&nbsp;Error Handler" />
    <link rel="prev" href="ch16s02.html" title="Configuring a Handler " />
    <link rel="next" href="ch16s04.html" title="Error Context Display " />
    <style type="text/css">
/*<![CDATA[*/
    body {
    background-color: white;
    color: black;
    }
    :link { color: #0000FF }
    :visited { color: #840084 }
    :active { color: #0000FF }
    div.c3 {margin-left: 0.5in; margin-right: 0.5in;}
    div.c2 {font-family: monospace;}
    h2.c1 {clear: both}
    /*]]>*/
    </style>
  </head>
  <body>
    <table class="progress2Header">
      <tr>
        <td>
          <img src="img/pear_progress2.gif" align="left" alt=
          "PEAR Progress2 logo" />
          <h1>
            HTML_Progress2 : The Definitive Guide
          </h1>
          <div class="navheader">
            <table width="100%" summary="Navigation header">
              <tr>
                <th colspan="3" align="center">
                  Controlling error generation
                </th>
              </tr>
              <tr>
                <td width="20%" align="left">
                  <a accesskey="p" href="ch16s02.html">Prev</a>&nbsp;
                </td>
                <th width="60%" align="center">
                  Chapter&nbsp;16.&nbsp;Error Handler
                </th>
                <td width="20%" align="right">
                  &nbsp;<a accesskey="n" href="ch16s04.html">Next</a>
                </td>
              </tr>
            </table>
          </div>
        </td>
      </tr>
    </table>
    <div class="sect1" lang="en" xml:lang="en">
      <div class="titlepage">
        <h2 class="title c1">
          <a name="id4798496" id="id4798496"></a>Controlling error generation
        </h2>
      </div>
      <p>
        There are many scenarios in which fine-grained control over error
        raising is absolutely necessary.
      </p>
      <p>
        The first level to control error generation is the <code class=
        "filename">php.ini</code> directives <span class=
        "emphasis"><em>display_errors</em></span> and <span class=
        "emphasis"><em>log_errors</em></span>. When these directives are set to
        <code class="constant">TRUE</code>, then browser and file outputs are
        effective.
      </p>
      <div class="tip c3">
        <table border="0" summary="Tip">
          <tr>
            <td rowspan="2" align="center" valign="top" width="48">
              <img alt="[Tip]" src="img/admons/tip.png" />
            </td>
            <th align="left">
              Tip
            </th>
          </tr>
          <tr>
            <td align="left" valign="top">
              If you want to ignore all errors raised (no display, no logs) and
              avoid to include PEAR core class, then you should have something
              like :
              <div class="php c2">
                <ol>
                  <li class="li1">
                    <div class="de1">
                      <span class="kw2">&lt;?php</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="kw1">require_once</span> <span class=
                      "st0">'HTML/Progress2.php'</span><span class=
                      "sy0">;</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      &nbsp;
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="kw2">function</span>
                      myErrorHandler<span class="br0">(</span><span class=
                      "br0">)</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="br0">{</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      &nbsp; &nbsp; <span class="kw1">return</span>
                      <span class="kw2">null</span><span class="sy0">;</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="br0">}</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      &nbsp;
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="re1">$errorConf</span> <span class=
                      "sy0">=</span> <span class="kw3">array</span><span class=
                      "br0">(</span><span class="st0">'error_handler'</span>
                      <span class="sy0">=&gt;</span> <span class=
                      "st0">'myErrorHandler'</span><span class=
                      "br0">)</span><span class="sy0">;</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="re1">$meter</span> <span class=
                      "sy0">=</span> <span class="kw2">new</span>
                      HTML_Progress2<span class="br0">(</span><span class=
                      "re1">$errorConf</span><span class=
                      "br0">)</span><span class="sy0">;</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="co1">// ...</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="kw2">?&gt;</span>
                    </div>
                  </li>
                </ol>
              </div>
            </td>
          </tr>
        </table>
      </div>
      <div class="caution c3">
        <table border="0" summary="Caution">
          <tr>
            <td rowspan="2" align="center" valign="top" width="48">
              <img alt="[Caution]" src="img/admons/caution.png" />
            </td>
            <th align="left">
              Caution
            </th>
          </tr>
          <tr>
            <td align="left" valign="top">
              The previous example will ignore display and logging activity,
              but NEVER ignore internal stack error. In other words, you'll
              keep always minimum information in the progress stack error.
              These informations are :
              <div class="php c2">
                <ol>
                  <li class="li1">
                    <div class="de1">
                      <span class="kw2">&lt;?php</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="kw3">array</span><span class=
                      "br0">(</span><span class="st0">'code'</span>
                      <span class="sy0">=&gt;</span> <span class=
                      "re1">$code</span><span class="sy0">,</span> <span class=
                      "st0">'level'</span> <span class="sy0">=&gt;</span>
                      <span class="re1">$level</span><span class="sy0">,</span>
                      <span class="st0">'params'</span> <span class=
                      "sy0">=&gt;</span> <span class=
                      "re1">$params</span><span class=
                      "br0">)</span><span class="sy0">;</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="coMULTI">/*</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="coMULTI">&nbsp; &nbsp; &nbsp; $code &nbsp;:
                      API error code (HTML_PROGRESS2_ERROR_* constant
                      value)</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="coMULTI">&nbsp; &nbsp; &nbsp; $level : API
                      error level (warning, error, exception)</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="coMULTI">&nbsp; &nbsp; &nbsp; $params: API
                      context execution parameters hash (function argument:
                      name, type, value)</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="coMULTI">&nbsp;*/</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="kw2">?&gt;</span>
                    </div>
                  </li>
                </ol>
              </div>So, these lines are always true (in error condition):
              <div class="php c2">
                <ol>
                  <li class="li1">
                    <div class="de1">
                      <span class="kw2">&lt;?php</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="re1">$meter</span> <span class=
                      "sy0">=</span> <span class="kw2">new</span>
                      HTML_Progress2<span class="br0">(</span><span class=
                      "br0">)</span><span class="sy0">;</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="co1">// ...</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="kw1">if</span> <span class=
                      "br0">(</span><span class="re1">$meter</span><span class=
                      "sy0">-&gt;</span><span class=
                      "me1">hasErrors</span><span class=
                      "br0">(</span><span class="br0">)</span> <span class=
                      "sy0">&gt;</span> <span class="nu0">0</span><span class=
                      "br0">)</span> <span class="br0">{</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      &nbsp; &nbsp; <span class="co1">// do something on error
                      ...</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="br0">}</span>
                    </div>
                  </li>
                  <li class="li1">
                    <div class="de1">
                      <span class="kw2">?&gt;</span>
                    </div>
                  </li>
                </ol>
              </div>
            </td>
          </tr>
        </table>
      </div>
      <p>
        It's up to you to choose your programming way. Just keep in mind this
        warning, in case of code evolution (error handler configuration).
        Behavior could change, and you won't keep backward compatibility.
      </p>
      <p>
        With <span class="bold"><strong>push_callback</strong></span> option,
        you can decides to stop script execution (as done with exceptions by
        default: returns <code class="constant">PEAR_ERROR_DIE</code>
        constant), or continue without filtering (returns <code class=
        "constant">NULL</code>).
      </p>
      <p>
        If you want to write your own callback function for the <span class=
        "emphasis"><em>push_callback</em></span> option, this one should have
        two arguments: first one will get the error code, and second will get
        error level. These are all the necessary informations to do a
        filtering. Example that follow show how to be aware that a deprecated
        function is used in a script.
      </p>
      <div class="php c2">
        <ol>
          <li class="li1">
            <div class="de1">
              <span class="kw2">&lt;?php</span>
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              <span class="kw1">require_once</span> <span class=
              "st0">'HTML/Progress2.php'</span><span class="sy0">;</span>
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              &nbsp;
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              <span class="kw2">function</span> myErrorFilter<span class=
              "br0">(</span><span class="re1">$code</span><span class=
              "sy0">,</span> <span class="re1">$level</span><span class=
              "br0">)</span>
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              <span class="br0">{</span>
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              &nbsp; &nbsp; <span class="kw1">if</span> <span class=
              "br0">(</span><span class="re1">$code</span> <span class=
              "sy0">===</span> HTML_PROGRESS2_ERROR_DEPRECATED<span class=
              "br0">)</span> <span class="br0">{</span>
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              &nbsp; &nbsp; &nbsp; &nbsp; <span class=
              "kw3">error_log</span><span class="br0">(</span><span class=
              "st0">'script: '</span><span class="sy0">.</span><span class=
              "kw2">__FILE__</span><span class="sy0">.</span><span class=
              "st0">' still used a deprecated function'</span><span class=
              "sy0">,</span> <span class="nu0">1</span><span class=
              "sy0">,</span> <span class=
              "st0">'admin@yoursite.com'</span><span class=
              "br0">)</span><span class="sy0">;</span>
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              &nbsp; &nbsp; <span class="br0">}</span>
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              &nbsp; &nbsp; <span class="kw1">return</span> <span class=
              "kw2">null</span><span class="sy0">;</span>
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              <span class="br0">}</span>
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              &nbsp;
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              <span class="re1">$errorConf</span> <span class="sy0">=</span>
              <span class="kw3">array</span><span class=
              "br0">(</span><span class="st0">'push_callback'</span>
              <span class="sy0">=&gt;</span> <span class=
              "st0">'myErrorFilter'</span><span class=
              "br0">)</span><span class="sy0">;</span>
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              <span class="re1">$meter</span> <span class="sy0">=</span>
              <span class="kw2">new</span> HTML_Progress2<span class=
              "br0">(</span><span class="re1">$errorConf</span><span class=
              "br0">)</span><span class="sy0">;</span>
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              <span class="co1">// ...</span>
            </div>
          </li>
          <li class="li1">
            <div class="de1">
              <span class="kw2">?&gt;</span>
            </div>
          </li>
        </ol>
      </div>
    </div>
    <table class="progress2Footer">
      <tr>
        <td align="left">
          HTML_Progress2 : The Definitive Guide
        </td>
        <td align="right">
          v 2.4.0 : April 20, 2007
        </td>
      </tr>
    </table>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left">
            <a accesskey="p" href="ch16s02.html">Prev</a>&nbsp;
          </td>
          <td width="20%" align="center">
            <a accesskey="u" href="ch16.html">Up</a>
          </td>
          <td width="40%" align="right">
            &nbsp;<a accesskey="n" href="ch16s04.html">Next</a>
          </td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">
            Configuring a Handler &nbsp;
          </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top">
            &nbsp;Error Context Display
          </td>
        </tr>
      </table>
    </div>
  </body>
</html>