Ik probeer met trigger_error een foutmelding op het scherm te toveren, maar om één of andere reden geeft die geen melding weer.

Bij wijze van test probeer ik eerst te connecten met alle juiste verbindingsconstanten. Ik krijg dan de melding 'test executed'. Daarna probeer ik het nogmaals met een fout wachtwoord. Ik krijg nu een leeg scherm. De funcie test() voert hij dus niet meer uit, wat de bedoeling is, maar ik hoopte de melding 'Could not connect to database' te krijgen.

Iemand een idee ?


<?php

ini_set('error_reporting', E_ALL & E_STRICT);
ini_set('display_errors', true);

final class CoreDatabase
{
	private static $dbInstance;
	private $dbHandler;
	
	public static function singleton()
	{
		if (!self::$dbInstance)
		{
			self::$dbInstance = new CoreDatabase();
		}
		return self::dbInstance;
	}
	
	private function __construct()
	{
		$this->connect();
		$this->test();
	}
	
	private function connect()
	{
		$this->dbHandler = new mysqli(CORE_DB_HOST, CORE_DB_USER, CORE_DB_PASS, CORE_DB_NAME);
		
		if(mysqli_connect_errno())
		{
			trigger_error('Could not connect to database', E_USER_ERROR);
		}
	}
	
	private function test()
	{
		echo 'test executed';
	}
}

define('CORE_DB_HOST', 'localhost');
define('CORE_DB_USER', 'mysqluser');
define('CORE_DB_PASS', 'mysqlpass');
define('CORE_DB_NAME', 'mysqldatabase');

$database = CoreDatabase::singleton();

?>
never mind... na het instellen van een custom error handler doet ie het wel :D
Zo te zien gebruik je PHP5 en bij PHP5 icm een class, kan je beter Exceptions voor errors gebruiken.
bedoel je:


<?php

try
{
  $this->dbHandler = new mysqli(CORE_DB_HOST, CORE_DB_USER, CORE_DB_PASS, CORE_DB_NAME);
}
catch(Exception $e)
{
  trigger_error($e->getMessage(), E_USER_ERROR);
}

?>


?
ja ookal kan je dan beter geen trigger_error gebruiken, dan heb je nogsteeds zo'n lelijke error, je kan bijvoorbeeld een nette error maken die in je lay-out past o.i.d.
comprendo... class CoreErrorHandler zal alles netjes gaan afvangen :D

Reageren