web/Zend/Debug.php
changeset 0 4eba9c11703f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/Zend/Debug.php	Mon Dec 13 18:29:26 2010 +0100
@@ -0,0 +1,108 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Debug
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Debug.php 20096 2010-01-06 02:05:09Z bkarwin $
+ */
+
+/**
+ * Concrete class for generating debug dumps related to the output source.
+ *
+ * @category   Zend
+ * @package    Zend_Debug
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+class Zend_Debug
+{
+
+    /**
+     * @var string
+     */
+    protected static $_sapi = null;
+
+    /**
+     * Get the current value of the debug output environment.
+     * This defaults to the value of PHP_SAPI.
+     *
+     * @return string;
+     */
+    public static function getSapi()
+    {
+        if (self::$_sapi === null) {
+            self::$_sapi = PHP_SAPI;
+        }
+        return self::$_sapi;
+    }
+
+    /**
+     * Set the debug ouput environment.
+     * Setting a value of null causes Zend_Debug to use PHP_SAPI.
+     *
+     * @param string $sapi
+     * @return void;
+     */
+    public static function setSapi($sapi)
+    {
+        self::$_sapi = $sapi;
+    }
+
+    /**
+     * Debug helper function.  This is a wrapper for var_dump() that adds
+     * the <pre /> tags, cleans up newlines and indents, and runs
+     * htmlentities() before output.
+     *
+     * @param  mixed  $var   The variable to dump.
+     * @param  string $label OPTIONAL Label to prepend to output.
+     * @param  bool   $echo  OPTIONAL Echo output if true.
+     * @return string
+     */
+    public static function dump($var, $label=null, $echo=true)
+    {
+        // format the label
+        $label = ($label===null) ? '' : rtrim($label) . ' ';
+
+        // var_dump the variable into a buffer and keep the output
+        ob_start();
+        var_dump($var);
+        $output = ob_get_clean();
+
+        // neaten the newlines and indents
+        $output = preg_replace("/\]\=\>\n(\s+)/m", "] => ", $output);
+        if (self::getSapi() == 'cli') {
+            $output = PHP_EOL . $label
+                    . PHP_EOL . $output
+                    . PHP_EOL;
+        } else {
+            if(!extension_loaded('xdebug')) {
+                $output = htmlspecialchars($output, ENT_QUOTES);
+            }
+
+            $output = '<pre>'
+                    . $label
+                    . $output
+                    . '</pre>';
+        }
+
+        if ($echo) {
+            echo($output);
+        }
+        return $output;
+    }
+
+}