class Kint

Same name and namespace in other branches
  1. 4.x src/Plugin/Devel/Dumper/Kint.php \Drupal\devel\Plugin\Devel\Dumper\Kint

Provides a Kint dumper plugin.

Plugin annotation


@DevelDumper(
  id = "kint",
  label = @Translation("Kint"),
  description = @Translation("Wrapper for <a href='https://github.com/kint-php/kint'>Kint</a> debugging tool."),
)

Hierarchy

Expanded class hierarchy of Kint

1 file declares its use of Kint
devel.install in ./devel.install
Install, update and uninstall functions for the devel module.
6 string references to 'Kint'
Debug::getFunctions in src/Twig/Extension/Debug.php
devel.module in ./devel.module
This module holds functions useful for Drupal development.
DevelDumperBase::getInternalFunctions in src/DevelDumperBase.php
Returns a list of internal functions.
devel_install in ./devel.install
Implements hook_install().
Kint::checkRequirements in src/Plugin/Devel/Dumper/Kint.php
Checks if requirements for this plugin are satisfied.

... See full list

File

src/Plugin/Devel/Dumper/Kint.php, line 24

Namespace

Drupal\devel\Plugin\Devel\Dumper
View source
class Kint extends DevelDumperBase {
    
    /**
     * {@inheritdoc}
     */
    public function __construct(array $configuration, $plugin_id, $plugin_definition) {
        parent::__construct($configuration, $plugin_id, $plugin_definition);
        $this->configure();
    }
    
    /**
     * Configures kint with more sane values.
     */
    protected function configure() {
        // Remove resource-hungry plugins.
        \Kint::$plugins = array_diff(\Kint::$plugins, [
            ClassMethodsPlugin::class,
            ClassStaticsPlugin::class,
            IteratorPlugin::class,
        ]);
        \Kint::$aliases = $this->getInternalFunctions();
        RichRenderer::$folder = FALSE;
        BlacklistPlugin::$shallow_blacklist[] = ContainerInterface::class;
    }
    
    /**
     * {@inheritdoc}
     */
    public function export(mixed $input, ?string $name = NULL) : MarkupInterface|string {
        ob_start();
        if ($name == '__ARGS__') {
            call_user_func_array([
                'Kint',
                'dump',
            ], $input);
            $name = NULL;
        }
        elseif ($name !== NULL) {
            // In order to get the correct access path information returned from Kint
            // we have to give a second parameter here. This is due to a fault in
            // Kint::getSingleCall which returns no info when the number of arguments
            // passed to Kint::dump does not match the number in the original call
            // that invoked the export (such as dsm). However, this second parameter
            // is just treated as the next variable to dump, it is not used as the
            // label. So we give a placeholder value that we can remove below.
            // @see https://gitlab.com/drupalspoons/devel/-/issues/252
            \Kint::dump($input, '---temporary-fix-see-issue-252---');
        }
        else {
            \Kint::dump($input);
        }
        $dump = ob_get_clean();
        if ($name !== NULL && $name !== '') {
            // Kint no longer treats an additional parameter as a custom title, but we
            // can add the required $name as a label at the top of the output.
            $dump = str_replace('<div class="kint-rich">', '<div class="kint-rich">' . $name . ': ', $dump);
            // Remove the output from the second dummy parameter. The pattern in [ ]
            // matches the minimum to ensure we get just the string to be removed.
            $pattern = '/(<dl><dt>[\\w\\d\\s<>\\/()]*"---temporary-fix-see-issue-252---"<\\/dt><\\/dl>)/';
            preg_match($pattern, $dump, $matches);
            if (preg_last_error() === 0 && isset($matches[1])) {
                $dump = str_replace($matches[1], '', $dump);
            }
        }
        return $this->setSafeMarkup($dump);
    }
    
    /**
     * {@inheritdoc}
     */
    protected function getInternalFunctions() : array {
        return array_merge(parent::getInternalFunctions(), KintOriginal::$aliases);
    }
    
    /**
     * {@inheritdoc}
     */
    public static function checkRequirements() : bool {
        return class_exists('Kint', TRUE);
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
DevelDumperBase::dump public function Dumps information about a variable. Overrides DevelDumperInterface::dump 2
DevelDumperBase::exportAsRenderable public function Returns a string representation of a variable wrapped in a render array. Overrides DevelDumperInterface::exportAsRenderable 2
DevelDumperBase::setSafeMarkup protected function Wrapper for \Drupal\Core\Render\Markup::create().
Kint::checkRequirements public static function Checks if requirements for this plugin are satisfied. Overrides DevelDumperInterface::checkRequirements
Kint::configure protected function Configures kint with more sane values.
Kint::export public function Returns a string representation of a variable. Overrides DevelDumperInterface::export
Kint::getInternalFunctions protected function Returns a list of internal functions. Overrides DevelDumperBase::getInternalFunctions
Kint::__construct public function