7

Do we need to include the class in the constructor?

In Magento 1, we simply use zend_debug::dump()->debug to debug object, how about for Magento 2?

4 Answers 4

12

You can use simply following way:


\Zend_Debug::dump($someVar)

1
  • \Zend_Debug is not working in magento 2.3, so do you have any idea how to run \Zend_Debug::dump(); in magento 2.3 ? Feb 20, 2019 at 14:02
1

You can also import Zend_Debug class at the top of your class file:

use Zend_Debug;

Then, your code will work as normal:

Zend_Debug($yourVar);

OR, you can directly instantiate the object of the class. For this, you don't need to import the class but have to use "backslash" infront of the Zend_Debug class name.

\Zend_Debug($yourVar);

Reference: PHP Documentation on Using namespaces: Aliasing/Importing

1
  • in some class, i can use it, but sometimes it cant, do you have any ideas?
    – leo
    Mar 16, 2017 at 7:45
1

Zend_Debug gone from 2.3

https://devdocs.magento.com/guides/v2.3/release-notes/backward-incompatible-changes/

Affected modules:

  • Zend_Debug

Action: Affected modules and classes were removed.

Reason: They are no longer used in Magento or Marketplace extensions, are expensive and time-intensive to maintain, and can cause potential security risks if not maintained properly.

3
  • Thanks for the updates, seems v2.3 removed many Zend functions. Do you know what is another good function for outputing debug message? Just var_dump?
    – leo
    Jan 14, 2019 at 3:55
  • That was the Magento teams way of getting 2.3 php 7.2 compatible. I used Zend_Debug all the time. I've been using echo <pre>; var_dump($var); Jan 15, 2019 at 16:51
  • I've given this more thought magento.stackexchange.com/a/283483/70343 Jul 27, 2019 at 10:32
0

In Magento 2.3+

To use the \Zend_Debug::dump($someVar) method :

  1. Create a folder app/code/Zend;
  2. Create a file app/code/Zend/Debug.php
  3. Copy in Debug.php :
<?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-2015 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

/**
 * Concrete class for generating debug dumps related to the output source.
 *
 * @category   Zend
 * @package    Zend_Debug
 * @copyright  Copyright (c) 2005-2015 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')) {
                $flags = ENT_QUOTES;
                // PHP 5.4.0+
                if (defined('ENT_SUBSTITUTE')) {
                    $flags = ENT_QUOTES | ENT_SUBSTITUTE;
                }
                $output = htmlspecialchars($output, $flags);
            }

            $output = '<pre>'
                . $label
                . $output
                . '</pre>';
        }

        if ($echo) {
            echo($output);
        }
        return $output;
    }

}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.