![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/ObjectManager/Profiler/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Framework\ObjectManager\Profiler; use Magento\Framework\ObjectManager\Profiler\Tree\Item; /** * Class Log */ class Log { /** * @var self */ protected static $instance; /** * @var Item */ protected $currentItem = null; /** * @var array */ protected $data = []; /** * @var array */ protected $roots = []; /** * @var array */ protected $used = []; /** * @var array */ protected $stats = ['total' => 0, 'used' => 0, 'unused' => 0]; /** * Constructor */ public function __construct() { register_shutdown_function([$this, 'display']); } /** * Retrieve instance * * @return Log */ public static function getInstance() { if (!self::$instance) { self::$instance = new Log(); } return self::$instance; } /** * Log object instantiation * * @param string $class * @return void */ public function startCreating($class) { $this->stats['total']++; $parent = empty($this->currentItem) ? null : $this->currentItem; $item = new Item($class, $parent); if (!$parent) { $this->roots[] = $item; } $this->currentItem = $item; } /** * Log object instantiation * * @param mixed $object * @return void */ public function stopCreating($object) { $this->currentItem->setHash(spl_object_hash($object)); $this->currentItem = $this->currentItem->getParent(); } /** * Monitor object * * @param mixed $object * @return void */ public function add($object) { $this->stats['total']++; if ($this->currentItem) { $item = new Item(get_class($object), $this->currentItem); $this->currentItem->addChild($item); } else { $item = new Item(get_class($object), null); $this->roots[] = $item; } $item->setHash(spl_object_hash($object)); } /** * Object was invoked * * @param mixed $object * @return void */ public function invoked($object) { $this->used[spl_object_hash($object)] = 1; } /** * Display results * * @return void */ public function display() { $this->stats['used'] = count($this->used); $this->stats['unused'] = $this->stats['total'] - $this->stats['used']; //phpcs:disable echo '<table border="1" cellspacing="0" cellpadding="2">', '<thead><tr><th>', "Creation chain (Red items are never used) Total: {$this->stats['total']}\n", "Used: {$this->stats['used']} Not used: {$this->stats['unused']}", '</th></tr></thead>', '<tbody>', '<tr><th>Instance class</th></tr>'; foreach ($this->roots as $root) { $this->displayItem($root); } echo '</tbody></table>'; //phpcs:enable } /** * Display item * * @param Item $item * @param int $level * @return void */ protected function displayItem(Item $item, $level = 0) { $colorStyle = isset($this->used[$item->getHash()]) ? '' : ' style="color:red" '; //phpcs:disable echo "<tr><td $colorStyle>" . str_repeat('· ', $level) . $item->getClass() . ' - ' . $item->getHash() . '</td></tr>'; //phpcs:enable foreach ($item->getChildren() as $child) { $this->displayItem($child, $level + 1); } } }