/lib/Varien/Debug.php
https://gitlab.com/LisovyiEvhenii/ismextensions · PHP · 204 lines · 123 code · 15 blank · 66 comment · 41 complexity · 5e30a0e05bfbd2a41b0ade3d076702ff MD5 · raw file
- <?php
- /**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * 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@magento.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magento.com for more information.
- *
- * @category Varien
- * @package Varien_Debug
- * @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
- */
- /**
- * Varien Debug methods
- *
- * @category Varien
- * @package Varien_Debug
- * @author Magento Core Team <core@magentocommerce.com>
- */
- class Varien_Debug
- {
- public static $argLength = 16;
- /**
- * Magento Root path
- *
- * @var string
- */
- protected static $_filePath;
- /**
- * Retrieve real root path with last directory separator
- *
- * @return string
- */
- public static function getRootPath()
- {
- if (is_null(self::$_filePath)) {
- if (defined('BP')) {
- self::$_filePath = BP;
- } else {
- self::$_filePath = dirname(dirname(__FILE__));
- }
- }
- return self::$_filePath;
- }
- /**
- * Prints or return a backtrace
- *
- * @param bool $return return or print
- * @param bool $html output in HTML format
- * @param bool $withArgs add short argumets of methods
- * @return string|bool
- */
- public static function backtrace($return = false, $html = true, $withArgs = true)
- {
- $trace = debug_backtrace();
- return self::trace($trace, $return, $html, $withArgs);
- }
- /**
- * Prints or return a trace
- *
- * @param array $trace trace array
- * @param bool $return return or print
- * @param bool $html output in HTML format
- * @param bool $withArgs add short argumets of methods
- * @return string|bool
- */
- public static function trace(array $trace, $return = false, $html = true, $withArgs = true)
- {
- $out = '';
- if ($html) {
- $out .= '<pre>';
- }
- foreach ($trace as $i => $data) {
- // skip self
- if ($i == 0) {
- continue;
- }
- // prepare method argments
- $args = array();
- if (isset($data['args']) && $withArgs) {
- foreach ($data['args'] as $arg) {
- $args[] = self::_formatCalledArgument($arg);
- }
- }
- // prepare method's name
- if (isset($data['class']) && isset($data['function'])) {
- if (isset($data['object']) && get_class($data['object']) != $data['class']) {
- $className = get_class($data['object']) . '[' . $data['class'] . ']';
- } else {
- $className = $data['class'];
- }
- if (isset($data['object'])) {
- $className .= sprintf('#%s#', spl_object_hash($data['object']));
- }
- $methodName = sprintf('%s%s%s(%s)',
- $className,
- isset($data['type']) ? $data['type'] : '->',
- $data['function'],
- join(', ', $args)
- );
- } else if (isset($data['function'])) {
- $methodName = sprintf('%s(%s)', $data['function'], join(', ', $args));
- }
- if (isset($data['file'])) {
- $pos = strpos($data['file'], self::getRootPath());
- if ($pos !== false) {
- $data['file'] = substr($data['file'], strlen(self::getRootPath()) + 1);
- }
- $fileName = sprintf('%s:%d', $data['file'], $data['line']);
- } else {
- $fileName = false;
- }
- if ($fileName) {
- $out .= sprintf('#%d %s called at [%s]', $i, $methodName, $fileName);
- } else {
- $out .= sprintf('#%d %s', $i, $methodName);
- }
- $out .= "\n";
- }
- if ($html) {
- $out .= '</pre>';
- }
- if ($return) {
- return $out;
- } else {
- echo $out;
- return true;
- }
- }
- /**
- * Format argument in called method
- *
- * @param mixed $arg
- */
- protected static function _formatCalledArgument($arg)
- {
- $out = '';
- if (is_object($arg)) {
- $out .= sprintf("&%s#%s#", get_class($arg), spl_object_hash($arg));
- } else if (is_resource($arg)) {
- $out .= '#[' . get_resource_type($arg) . ']';
- } else if (is_array($arg)) {
- $isAssociative = false;
- $args = array();
- foreach ($arg as $k => $v) {
- if (!is_numeric($k)) {
- $isAssociative = true;
- }
- $args[$k] = self::_formatCalledArgument($v);
- }
- if ($isAssociative) {
- $arr = array();
- foreach ($args as $k => $v) {
- $arr[] = self::_formatCalledArgument($k) . ' => ' . $v;
- }
- $out .= 'array(' . join(', ', $arr) . ')';
- } else {
- $out .= 'array(' . join(', ', $args) . ')';
- }
- } else if (is_null($arg)) {
- $out .= 'NULL';
- } else if (is_numeric($arg) || is_float($arg)) {
- $out .= $arg;
- } else if (is_string($arg)) {
- if (strlen($arg) > self::$argLength) {
- $arg = substr($arg, 0, self::$argLength) . "...";
- }
- $arg = strtr($arg, array("\t" => '\t', "\r" => '\r', "\n" => '\n', "'" => '\\\''));
- $out .= "'" . $arg . "'";
- } else if (is_bool($arg)) {
- $out .= $arg === true ? 'true' : 'false';
- }
- return $out;
- }
- }