Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Debugowanie wartości zmiennych


Macsch15

Rekomendowane odpowiedzi

Poradnik przeznaczony jest dla trybu developera, nie powinno się go stosować na forum produkcyjnym.

Domyślnie, IP.Board 4.x posiada własny handler błędów który uniemożliwia nam użycie np. funkcji var_dump, która domyślnie próbuje wyświetlić zawartość, modyfikując header. Przy próbie użycia wyświetli się podobny błąd do tego:

2016-12-26_13-01-22.png

 

Aby ominąć to, musimy zmodyfikować plik init.php.

Znajdź:

		/* Set error handlers */
		if ( \IPS\IN_DEV AND \IPS\DEV_USE_WHOOPS and file_exists( ROOT_PATH . '/dev/Whoops/Run.php' ) )
		{
			self::$PSR0Namespaces['Whoops'] = ROOT_PATH . '/dev/Whoops';
			$whoops = new \Whoops\Run;
			$handler =  new \Whoops\Handler\PrettyPageHandler;
			if ( \IPS\DEV_WHOOPS_EDITOR )
			{
				$handler->setEditor( \IPS\DEV_WHOOPS_EDITOR );
			}
			$whoops->pushHandler( $handler );
			$whoops->register();
		}
		else
		{
			set_error_handler( '\IPS\IPS::errorHandler' );
			set_exception_handler( '\IPS\IPS::exceptionHandler' );
		}

Zamień na:

		// /* Set error handlers */
		// if ( \IPS\IN_DEV AND \IPS\DEV_USE_WHOOPS and file_exists( ROOT_PATH . '/dev/Whoops/Run.php' ) )
		// {
		// 	self::$PSR0Namespaces['Whoops'] = ROOT_PATH . '/dev/Whoops';
		// 	$whoops = new \Whoops\Run;
		// 	$handler =  new \Whoops\Handler\PrettyPageHandler;
		// 	if ( \IPS\DEV_WHOOPS_EDITOR )
		// 	{
		// 		$handler->setEditor( \IPS\DEV_WHOOPS_EDITOR );
		// 	}
		// 	$whoops->pushHandler( $handler );
		// 	$whoops->register();
		// }
		// else
		// {
		// 	set_error_handler( '\IPS\IPS::errorHandler' );
		// 	set_exception_handler( '\IPS\IPS::exceptionHandler' );
		// }

Dodatkowo, tworzymy w głównym katalogu forum (tam gdzie jest plik index.php) plik constants.php i dodajemy w nim własną funkcję do debugowania zmiennych:

function dd(...$args)
{
    var_dump($args);
    
    die();
}

Zapisujemy plik.

Od teraz, możemy debugować zawartość zmiennych:

dd(['hello', 'world'], true, 'hello world');

Da przykładowy wynik:

2016-12-26_13-06-49.png

Jest to szczególnie przydatne przy tworzeniu aplikacji.

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.