Ejemplo n.º 1
0
 protected function dumpObject($value)
 {
     $length = count($value);
     $g = 255 - min(10 + 10 * $this->getLevel(), 255);
     $bg = 255 - min(120 + 10 * $this->getLevel(), 255);
     $tg = 255 - min(160 + 10 * $this->getLevel(), 255);
     $color = "rgb( {$g}, 255, {$g} )";
     $borderColor = "rgb( {$bg}, 120, {$bg} )";
     $textColor = "rgb( {$tg}, 160, {$tg} )";
     $div = new Manipulator('div');
     $table = $div->div->strong->setText("Object")->parent->small->setText('(Class: ' . get_class($value) . ')')->parent->parent->table;
     $table->tableCols(['Property', 'Value']);
     $ref = new \ReflectionClass(get_class($value));
     $classes = [$ref];
     $parent = $ref;
     $firstParent = null;
     while ($parent = $parent->getParentClass()) {
         if (!$firstParent) {
             $firstParent = $parent;
         }
         $classes[] = $parent;
     }
     $tbody = $table->tbody;
     foreach ($classes as $classRef) {
         foreach ($classRef->getProperties() as $prop) {
             $tr = $table->append('tr');
             $prop->setAccessible(true);
             $tr->append('td')->append('small')->setText($prop->isStatic() ? '::' : '->')->parent->append('strong')->setText($prop->getName())->parent->append('small')->setText('(' . $classRef->getName() . ')')->parent->parent->append('td')->setText($this->dumpMixed($prop->getValue($value)));
         }
     }
     $div->setCss(['border' => "1px solid {$borderColor}", 'background' => $color, 'padding' => '10px', 'font-family' => 'monospace', 'font-size' => '14px', 'display' => 'inline-block', 'vertical-align' => 'top']);
     $div->find('strong, th')->setCss(['color' => $textColor]);
     $div->table->setCss(['border-collapse' => 'collapse', 'width' => '100%']);
     $div->find('td')->setCss(['vertical-align' => 'top']);
     $div->find('td, th')->setCss(['border' => "1px solid {$borderColor}", 'padding' => '3px']);
     return $div->getString();
 }
Ejemplo n.º 2
0
 /**
  * @param bool|false $withOutput
  *
  * @return Manipulator
  */
 public function generateHtml($withOutput = false)
 {
     $th = ['Name/ID', 'Execution Time', 'Total Execution Time', 'Memory', 'Total Memory', 'Memory Peak', 'Avg. Memory Peak', 'Real Memory', 'Total Real Memory', 'Real Memory Peak', 'Avg. Real Memory Peak'];
     $m = new Manipulator('div');
     $tbl = $m->setCss(['font-family' => 'monospace', 'font-size' => '8px', 'color' => '#333'])->table->tableCols($th);
     foreach ($this->_records as $record) {
         $fromStart = $record->getAbsoluteResult();
         $fromLast = $record->getResult();
         if (!$fromLast) {
             $fromLast = $fromStart;
         }
         $tr = $tbl->append('tr');
         $tr->append('th')->setText($record->getName());
         foreach ([$fromLast->getTime(), $fromStart->getTime()] as $time) {
             $time = $time * 1000;
             $tr->append('td')->append('label[title="' . $time . ' ms"]')->setText(StringUtil::timify($time));
         }
         foreach ([$fromLast->getMemoryUsage(), $fromStart->getMemoryUsage(), $fromLast->getMemoryUsagePeak(), $fromStart->getMemoryUsagePeak(), $fromLast->getRealMemoryUsage(), $fromStart->getRealMemoryUsage(), $fromLast->getRealMemoryUsagePeak(), $fromStart->getRealMemoryUsagePeak()] as $bytes) {
             $tr->append('td')->append('label[title="' . $bytes . ' Byte"]')->setText(StringUtil::bytify($bytes));
         }
     }
     $m->find('table')->setCss(['width' => '100%']);
     $m->find('td, th')->setCss(['border' => '1px solid #ccc']);
     $m->find('td')->setCss(['text-align' => 'right']);
     $m->find('tr:even, tbody th')->setCss(['background' => '#efefef']);
     return $m;
 }