(BugReport) Debug::consoleDump – číslo řádku a cesta k souboru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Patrik Votoček
Člen | 2221
+
0
-

Už jsem si zvyknul používat Debug::consoleDump() je to komfort který je skvělí. Ale jak Debug::dump() tak Debug::consoleDump() májí možnost zobrazení souboru a řádku kde byly volány (Debug::$showLocation = TRUE;) ale zrovna dneska když jsem to potřeboval jsem si všimnul že pokud použiju Debug::consoleDump() místo Debug::dump() tak jako soubor kde byla tato událost volána je vždy …Nette/Debug/console.phtml a řádek 179. A tak jsem nelenil a pokusil se o fix tady je http://uloz.to/…56/debug.zip . Co jsem upravil:
Debug.php

/**
	 * Dumps information about a variable in readable format.
	 *
	 * @param  mixed  variable to dump
	 * @param  bool   return output instead of printing it? (bypasses $productionMode)
>>	 * @param  string file path
>>	 * @param  int    line in file
	 * @return mixed  variable itself or dump
	 */
>>	public static function dump($var, $return = FALSE, $file = NULL, $line = NULL) //tady jsou navíc 2 nepovinné parametry
	{
		if (!$return && self::$productionMode) {
			return $var;
		}

		$output = "<pre class=\"dump\">" . self::_dump($var, 0) . "</pre>\n";

		if (self::$showLocation) {
			$trace = debug_backtrace();
			//>>toto celé přibilo
>>			if (!empty($file) && !empty($line)) {
>>				$output = substr_replace($output, ' <small>' . htmlspecialchars("in file {$file} on line {$line}", ENT_NOQUOTES) . '</small>', -8, 0);
>>			} //<< a tady to končí
>>			elseif (isset($trace[0]['file'], $trace[0]['line'])) { //tady se jenom if změnil na elseif
				$output = substr_replace($output, ' <small>' . htmlspecialchars("in file {$trace[0]['file']} on line {$trace[0]['line']}", ENT_NOQUOTES) . '</small>', -8, 0);
			}
		}

		if (self::$consoleMode) {
			$output = htmlspecialchars_decode(strip_tags($output), ENT_NOQUOTES);
		}

		if ($return) {
			return $output;

		} else {
			echo $output;
			return $var;
		}
	}



	/**
	 * Dumps information about a variable in Nette Debug Console.
	 *
	 * @param  mixed  variable to dump
	 * @param  string optional title
	 * @return mixed  variable itself
	 */
	public static function consoleDump($var, $title = NULL)
	{
		if (!self::$productionMode) {
			//>>toto celé přibilo
>>			$trace = debug_backtrace();
>>			if (isset($trace[0]['file'], $trace[0]['line'])) {
>>				self::$consoleData[] = array('title' => $title, 'var' => $var, 'file' => $trace[0]['file'], 'line' => $trace[0]['line']);
>>			}
>>			else //<<tady to končí
				self::$consoleData[] = array('title' => $title, 'var' => $var); //původně tu byl pouze tento řádek
		}

		return $var;
	}

a console.phtml tam jenom za řádek 176 přibyl další:

<?php $file = $line = NULL; if (isset($item['file']) && isset($item['line'])) { $file = $item['file']; $line = $item['line']; } ?>

a původně 179 řádek (nyní 180) vypadal:

<td><?php echo preg_replace_callback('#(<pre class="dump">|\s+)?(.*)\((\d+)\) <code>#', '_netteDumpCb2', Debug::dump($val, TRUE) ?></td>

a nyní vypadá:

<td><?php echo preg_replace_callback('#(<pre class="dump">|\s+)?(.*)\((\d+)\) <code>#', '_netteDumpCb2', Debug::dump($val, TRUE, $file, $line)) ?></td>

Celé se to vztahuje k revizi 475.

Patrik Votoček
Člen | 2221
+
0
-

Tak po domuvě včera na webexpu připomínám tohle asi zapadlé vlákno a přidávám patch http://saddam.vrtak-cz.net/…leDump.patch

A magická slova na konec

řešit DG

David Grudl
Nette Core | 8228
+
0
-

fixed