Вход Регистрация
Файл: vendor/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php
Строк: 116
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentVarDumperCommandDescriptor;

use 
SymfonyComponentConsoleOutputOutputInterface;
use 
SymfonyComponentVarDumperClonerData;
use 
SymfonyComponentVarDumperDumperHtmlDumper;

/**
 * Describe collected data clones for html output.
 *
 * @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
 *
 * @final
 */
class HtmlDescriptor implements DumpDescriptorInterface
{
    private 
bool $initialized false;

    public function 
__construct(
        private 
HtmlDumper $dumper,
    ) {
    }

    public function 
describe(OutputInterface $outputData $data, array $contextint $clientId): void
    
{
        if (!
$this->initialized) {
            
$styles file_get_contents(__DIR__.'/../../Resources/css/htmlDescriptor.css');
            
$scripts file_get_contents(__DIR__.'/../../Resources/js/htmlDescriptor.js');
            
$output->writeln("<style>$styles</style><script>$scripts</script>");
            
$this->initialized true;
        }

        
$title '-';
        if (isset(
$context['request'])) {
            
$request $context['request'];
            
$controller "<span class='dumped-tag'>{$this->dumper->dump($request['controller'], true, ['maxDepth' => 0])}</span>";
            
$title sprintf('<code>%s</code> <a href="%s">%s</a>'$request['method'], $uri $request['uri'], $uri);
            
$dedupIdentifier $request['identifier'];
        } elseif (isset(
$context['cli'])) {
            
$title '<code>$ </code>'.$context['cli']['command_line'];
            
$dedupIdentifier $context['cli']['identifier'];
        } else {
            
$dedupIdentifier bin2hex(random_bytes(4));
        }

        
$sourceDescription '';
        if (isset(
$context['source'])) {
            
$source $context['source'];
            
$projectDir $source['project_dir'] ?? null;
            
$sourceDescription sprintf('%s on line %d'$source['name'], $source['line']);
            if (isset(
$source['file_link'])) {
                
$sourceDescription sprintf('<a href="%s">%s</a>'$source['file_link'], $sourceDescription);
            }
        }

        
$isoDate $this->extractDate($context'c');
        
$tags array_filter([
            
'controller' => $controller ?? null,
            
'project dir' => $projectDir ?? null,
        ]);

        
$output->writeln(<<<HTML
            <article data-dedup-id="$dedupIdentifier">
                <header>
                    <div class="row">
                        <h2 class="col">
$title</h2>
                        <time class="col text-small" title="
$isoDate" datetime="$isoDate">
                            
{$this->extractDate($context)}
                        </time>
                    </div>
                    
{$this->renderTags($tags)}
                </header>
                <section class="body">
                    <p class="text-small">
                        
$sourceDescription
                    </p>
                    
{$this->dumper->dump($datatrue)}
                </section>
            </article>
            HTML
        );
    }

    private function 
extractDate(array $contextstring $format 'r'): string
    
{
        return 
date($format, (int) $context['timestamp']);
    }

    private function 
renderTags(array $tags): string
    
{
        if (!
$tags) {
            return 
'';
        }

        
$renderedTags '';
        foreach (
$tags as $key => $value) {
            
$renderedTags .= sprintf('<li><span class="badge">%s</span>%s</li>'$key$value);
        }

        return <<<HTML
            <div class="row">
                <ul class="tags">
                    
$renderedTags
                </ul>
            </div>
            HTML;
    }
}
Онлайн: 3
Реклама