CodeIgniter

Les aides au debug

La classe Benchmarking

Cette classe permet de créer des marqueurs de début et de fin dans le code des modèles, des vues ou des contrôleurs créés avec CodeIgniter dans le but de calculer le temps d'exécution du code entre le marqueur de début et le marqueur de fin.

Cette classe se charge toute seule au démarrage de chaque script, il n'est donc pas nécessaire de le spécifier dans le fichier autoload.php du répertoire system/application/config ou de la charger dans le constructeur du contrôleur.

Pour calculer le temps d'exécution entre deux marqueurs, nous devons utiliser la méthode $this->benchmark->mark() au début et à la fin du code à tester (en donnant en paramètre une chaîne de caractères différente à chaque appel de cette fonction) et la méthode $this->benchmark->elapsed_time() pour afficher le temps d'exécution en secondes (cette fonction prend en paramètres deux chaînes de caractères correspondant aux marqueurs de début et de fin).

Exemple :

<?php
class FakeController extends Controller{

	function index(){
		$this->benchmark->mark('mark_start');
		$tmp = 3000000;
		for ($i=0;$i<$tmp;$i++);
		$this->benchmark->mark('mark_end');
		echo $this->benchmark->elapsed_time('mark_start', 'mark_end');
	}
	
}
?>

Le Profiler

Le Profiler est un outil de CodeIgniter permettant d'afficher les données présentes dans la variable $_POST, les requêtes SQL qui ont été exécutées ainsi que les marqueurs utilisés avec la classe Benchmarking s'ils respectent cette condition : le nom du marqueur du début doit se terminer par '_start' et le marqueur de fin par '_end' (comme dans l'exemple précédent).

Tout comme la classe Benchmarking, la classe Profiler se charge toute seule au démarrage.

Pour activer ou désactiver le profiling de l'application, il suffit d'utiliser la fonction suivante dans la méthode du contrôleur que l'on veut analyser :

//Activation
$this->output->enable_profiler(TRUE);

//Désactivation
$this->output->enable_profiler(FALSE);


Une fois le profiler activé, on obtient le tableau suivant à la fin de la page :

Les tests unitaires

CodeIgniter possède une classe qui correspond à un petit mécanisme de tests unitaires pour vérifier la valeur retournée par une fonction. Cette classe est la classe Unit Test. On peut la charger soit en utilisant la fonction $this->load->library('unit_test') à partir du constructeur du contrôleur ou la spécifier dans le fichier autoload.php du dossier system/application/config.

Pour effectuer un test, il suffit d'utiliser la fonction $this->unit->run() qui prend en paramètre la valeur à tester, la valeur attendue, et optionnellement, le nom du test. Cette fonction retourne un tableau HTML que l'on peut afficher avec la fonction 'echo'.

Exemple :

echo $this->unit->run("1", "1", "Bon test");
echo $this->unit->run("1", "abc", "Test foireux");


L'exemple ci-dessus donne l'affichage suivant :

Pour obtenir plus d'informations sur cette classe, visitez cette page.