/branches/v0.2-buhl/framework/I18n.php |
---|
File deleted |
\ No newline at end of file |
/branches/v0.2-buhl/framework/Application.php |
---|
3,12 → 3,17 |
/** |
* Classe fournissant des informations au Framework sur l'application. |
* |
* @category PHP 5.2 |
* @package Framework |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org) |
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html> |
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt> |
* PHP version 5 |
* |
* @category Debogage |
* @package Framework |
// Auteur principal : |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
// Autres auteurs : |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt> |
* @version $Id$ |
* @copyright 1999-2009 Tela Botanica (accueil@tela-botanica.org) |
*/ |
class Application { |
/branches/v0.2-buhl/framework/config.defaut.ini |
---|
21,10 → 21,6 |
; Débogage |
; Indique si oui ou non on veut afficher le débogage. |
fw_debogage = true |
; Indique sous quelle forme les méssages de débogage doivent s'afficher : |
; - Debug::MODE_ECHO : le message est affiché en utilisant echo |
; - Debug::MODE_NOTICE : le message est affiché en utilisant une erreur de type notice |
fw_debogage_mode = "php:Debug::MODE_ECHO" |
; Indique si oui ou non on veut afficher le contexte de débogage. |
fw_debogage_contexte = false |
; Niveau d'erreur à employer pour le code PHP. Voir le manuel de PHP pour les différents niveaux disponibles. |
31,9 → 27,6 |
fw_debogage_niveau = 2048 |
; Indique si oui ou non on veut activer la journalisation des erreurs. |
fw_log_debogage = false |
; +------------------------------------------------------------------------------------------------------+ |
; Log |
; Indique le fuseau horaire pour le datage des logs. |
fw_timezone = Europe/Paris |
; Indique la taille max d'un fichier log (en octets) |
45,7 → 38,7 |
fw_benchmark_chrono = true |
; +------------------------------------------------------------------------------------------------------+ |
; Chemins, dossiers et fichiers |
; Chemins et fichiers |
; Nom des fichiers de config recherché. Défini par défaut dans la classe Config |
; fw_fichier_config = "config%s.ini" |
; Chemin vers le dossier du framework. Défini par défaut dans la classe Config |
101,8 → 94,8 |
bdd_mot_de_passe = "" |
; Nom de la base de données principale. |
bdd_nom = "" |
; Encodage de la base de données principale. Normalement le même que l'application mais au format base de |
; données : voir ici : http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html |
; Encodage de la base de données principale. Normalement le même que l'application mais au format base de |
; données : voir ici : http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html |
; et là: http://www.postgresql.org/docs/8.1/static/multibyte.html pour les correspondances |
bdd_encodage = "utf8" |
114,13 → 107,6 |
sortie_encodage = "UTF-8" |
; +------------------------------------------------------------------------------------------------------+ |
; I18n |
; Indique le nom du paramêtre à rechercher dans le GET pour connaître la langue actuellement demandée |
i18n_url_parametre = "langue" |
; Indique la langue par défaut |
i18n_langue_defaut = "fr" |
; +------------------------------------------------------------------------------------------------------+ |
; URLs |
; URL de base de l'application, si elle est laissée vide, l'application fonctionnera en Stand-alone |
; Peut utiliser une objet Net_URL comme ceci : "php:$mon_objet_net_url->getUrl()" |
/branches/v0.2-buhl/framework/Chronometre.php |
---|
1,25 → 1,32 |
<?php |
// declare(encoding='UTF-8'); |
/** Classe Chronometre() - Permet de stocker et d'afficher les temps d'éxécution de script. |
/** Classe Chronometre() - Permet de stocker et d'afficher |
* les temps d'éxécution de script. |
* |
* Cette classe permet de réaliser un ensemble de mesure de temps prises à différents endroits d'un script. |
* Ces mesures peuvent ensuite être affichées au sein d'un tableau XHTML. |
* Cette classe permet de réaliser un ensemble |
* de mesure de temps prises à |
* différents endroits d'un script. |
* Ces mesures peuvent ensuite être affichées au |
* sein d'un tableau XHTML. |
* |
* @category PHP 5.2 |
* @package Framework |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org) |
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html> |
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt> |
* |
* PHP Version 5 |
* |
* @category PHP |
* @package Framework |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright 2009 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version Release: <package_version> |
* @link /doc/framework/ |
*/ |
class Chronometre { |
/*** Attributs : ***/ |
private static $instance = null; |
private static $temps = array(); |
private $_temps = array(); |
/** Constructeur : **/ |
private function __construct() { |
self::setTemps('depart', microtime()); |
public function __construct() { |
$this->setTemps(array('depart' => microtime())); |
} |
/** Accesseurs : |
28,12 → 35,12 |
* |
* @return int le temps écoulé |
*/ |
private static function getTemps($cle = null) { |
public function getTemps($cle = null) { |
$temps = ''; |
if (!is_null($cle)) { |
$temps = self::$temps[$cle]; |
$temps = $this->_temps[$cle]; |
} else { |
$temps = self::$temps; |
$temps = $this->_temps; |
} |
return $temps; |
} |
44,46 → 51,39 |
* |
* @return null |
*/ |
private static function setTemps($cle, $moment) { |
array_push(self::$temps, array($cle => $moment)); |
public function setTemps($moment = array ()) { |
array_push($this->_temps, $moment); |
} |
/*** Méthodes : ***/ |
/** |
* Effectue un chronometrage. |
* |
* @param string le nom du point de chronométrage |
* @return null |
*/ |
public static function chrono($cle) { |
$moment = microtime(); |
self::verifierCreationInstance(); |
self::setTemps($cle, $moment); |
} |
/** |
/** Méthode afficherChrono() - |
* Permet d'afficher les temps d'éxécution de différentes parties d'un script. |
* |
* Cette fonction permet d'afficher un ensemble de mesure de temps prises à différents endroits d'un script. |
* Ces mesures sont affichées au sein d'un tableau XHTML dont on peut controler l'indentation des balises. |
* Pour un site en production, il suffit d'ajouter un style #chrono {display:none;} dans la css. |
* De cette façon, le tableau ne s'affichera pas. Le webmaster lui pourra rajouter sa propre feuille de style |
* affichant le tableau. |
* Cette fonction permet d'afficher un ensemble de |
* mesure de temps prises à différents endroits d'un script. |
* Ces mesures sont affichées au sein d'un tableau XHTML |
* dont on peut controler l'indentation des balises. |
* Pour un site en production, il suffit d'ajouter un style |
* #chrono {display:none;} dans la css. De cette façon, |
* le tableau ne s'affichera pas. Le webmaster lui pourra |
* rajouter sa propre feuille de style affichant le tableau. |
* Le développeur initial de cette fonction est Loic d'Anterroches. |
* Elle a été modifiée par Jean-Pascal Milcent. |
* Elle utilise une variable gobale : $_CHRONO_ |
* |
* @author Loic d'Anterroches |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* |
* @param int $indentation_origine l'indentation de base. |
* @param int $indentation le pas d'indentation. |
* @return string la chaine XHTML de mesure des temps. |
*/ |
public static function afficherChrono($indentation_origine = 8, $indentation = 4) { |
self::verifierCreationInstance(); |
public function afficherChrono($indentation_origine = 8, $indentation = 4) { |
// Création du chrono de fin |
self::setTemps('fin', microtime()); |
$GLOBALS['_SCRIPT_']['chrono']->setTemps(array ( |
'fin' => microtime() |
)); |
// Début création de l'affichage |
$sortie = str_repeat(' ', $indentation_origine) . |
105,13 → 105,13 |
$total_tps_ecoule = 0; |
// Récupération de la premiére mesure |
$tab_depart = self::getTemps(0); |
$tab_depart = & $this->getTemps(0); |
list ($usec, $sec) = explode(' ', $tab_depart['depart']); |
// Ce temps correspond à tps_fin |
$tps_debut = ((float) $usec + (float) $sec); |
foreach (self::getTemps() as $tab_temps) { |
foreach ($this->getTemps() as $tab_temps) { |
foreach ($tab_temps as $cle => $valeur) { |
list ($usec, $sec) = explode(' ', $valeur); |
$tps_fin = ((float) $usec + (float) $sec); |
148,14 → 148,5 |
return $sortie; |
} |
/** |
* Vérifie si l'instance de classe à été crée, si non la crée |
*/ |
private static function verifierCreationInstance() { |
if (empty(self::$instance)) { |
self::$instance = new Chronometre(); |
} |
} |
} |
?> |
/branches/v0.2-buhl/framework/Config.php |
---|
5,12 → 5,15 |
* Elle offre l'accès en lecture seule aux paramètres de config. |
* C'est une Singleton. |
* |
* @category PHP 5.2 |
* @package Framework |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org) |
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html> |
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt> |
* PHP Version 5 |
* |
* @category PHP |
* @package Framework |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright 2009 Tela-Botanica |
* @license GPL-v3 et CECILL-v2 |
* @version SVN: <svn_id> |
* @link /doc/framework/ |
*/ |
class Config { |
90,7 → 93,7 |
* @param string $fichier_ini nom du fichier ini à parser |
* @return array tableau contenant les paramètres du fichier ini |
*/ |
public static function parserFichierIni($fichier_ini) { |
private static function parserFichierIni($fichier_ini) { |
$retour = false; |
if (file_exists($fichier_ini)) { |
$ini = parse_ini_file($fichier_ini, true); |
/branches/v0.2-buhl/framework/Modele.php |
---|
8,12 → 8,15 |
* |
* PHP Version 5 |
* |
* @category PHP 5.2 |
* @package Framework |
* @author Aurélien PERONNET <aurelien@tela-botanica.org> |
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org) |
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html> |
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt> |
* @category Class |
* @package Framework |
* @author aurelien <aurelien@tela-botanica.org> |
* @copyright 2009 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @version SVN: $$Id$$ |
* @link /doc/framework/ |
* |
*/ |
abstract class Modele { |
/branches/v0.2-buhl/framework/Debug.php |
---|
5,18 → 5,20 |
* L'affichage et l'utilisation de ces fonctions sont améliorés via cette classe. |
* Cette classe est inspirée de la classe Zend_Debug. |
* |
* @category PHP 5.2 |
* @package Framework |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org) |
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html> |
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt> |
* PHP version 5 |
* |
* @category Debogage |
* @package Framework |
// Auteur principal : |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
// Autres auteurs : |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt> |
* @version $$Id$$ |
* @copyright 1999-2009 Tela Botanica (accueil@tela-botanica.org) |
*/ |
class Debug { |
const MODE_ECHO = 'echo'; |
const MODE_NOTICE = 'e_user_notice'; |
/** |
* mode de php (cli ou sapi) |
*/ |
40,7 → 42,7 |
* @param boolean $echo si true on affiche le résultat, si false on ne renvoie que la chaine sans l'afficher |
* @return string la chaine à afficher representant le dump ou null si echo |
*/ |
public static function dump($variable, $mot_cle = null, $echo = false) { |
public static function dump($variable, $mot_cle = null, $echo = true) { |
// var_dump de la variable dans un buffer et récupération de la sortie |
ob_start(); |
var_dump($variable); |
54,13 → 56,13 |
} |
/** |
* Equivalent de print_r. |
* Equivalent de print_r |
* @param mixed $variable la variable à afficher |
* @param string $mot_cle le mot cle à associer |
* @param boolean $echo faire un echo ou non |
* @return string la chaine contenant la variable printée ou null si echo |
*/ |
public static function printr($variable, $mot_cle = null, $echo = false) { |
public static function printr($variable, $mot_cle = null, $echo = true) { |
// Récupération de la sortie |
$sortie = print_r($variable, true); |
83,14 → 85,10 |
$sortie = self::traiterSortieSuivantMode($mot_cle, $sortie); |
// Affichage et/ou retour |
self::verifierParametresConfig(); |
if (Config::get('fw_debogage') == true) { |
if ($echo === true || Config::get('fw_debogage_mode') == self::MODE_ECHO) { |
if ($echo) { |
echo $sortie; |
return null; |
} else if (Config::get('fw_debogage_mode') == self::MODE_NOTICE) { |
trigger_error($sortie, E_USER_NOTICE); |
return null; |
} else { |
return $sortie; |
} |
121,23 → 119,5 |
} |
return $sortie; |
} |
/** |
* Vérifie que tous les paramêtres de config nécessaires au fonctionnement de cette classe existe dans les fichiers |
* de configurations. |
*/ |
private static function verifierParametresConfig() { |
$ok = true; |
$parametres = array('fw_debogage', 'fw_debogage_mode'); |
foreach ($parametres as $param) { |
if (is_null(Config::get($param))) { |
$classe = get_class(); |
$m = "L'utilisation de la classe $classe nécessite de définir '$param' dans un fichier de configuration."; |
trigger_error($m, E_USER_WARNING); |
$ok = false; |
} |
} |
return $ok; |
} |
} |
?> |
/branches/v0.2-buhl/framework/GestionnaireException.php |
---|
5,17 → 5,20 |
* C'est un Singleton. |
* |
* @category PHP 5.2 |
* @package Framework |
* @package Framework |
* @author Aurélien PERONNET <aurelien@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jmp@tela-botanica.org> |
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org) |
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html> |
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt> |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @version $Id$$ |
* @link /doc/framework/ |
* |
*/ |
class GestionnaireException { |
const MODE_CLI = 'cli'; |
/** Liste des exceptions enregistrées */ |
private static $exceptions = array(); |
37,12 → 40,12 |
// Désactivation des balises HTML dans les messages d'erreur de PHP en mode ligne de commande |
if (self::$mode == self::MODE_CLI) { |
ini_set('html_errors', 0); |
} |
} |
set_exception_handler(array(get_class(),'gererException')); |
set_error_handler(array(get_class(),'gererErreur')); |
} |
/** Configure le Gestionnaire d'exceptions et d'erreur à partir des paramêtres de config. */ |
public static function configurer() { |
self::$contexte = Config::get('fw_debogage_contexte'); |
49,8 → 52,21 |
self::$logger = Config::get('fw_log_debogage'); |
self::$afficher = Config::get('fw_debogage'); |
} |
/** Renvoie le booleen définissant si l'on affiche le contexte ou non */ |
/** |
* Renvoie le nombre d'exceptions et d'erreurs levées. |
* @see getExceptions() pour obtenir les exceptions formatées. |
* @since 0.3 |
* @return int le nombre d'exception actuellement levées |
*/ |
public static function getExceptionsNbre() { |
return count(self::$exceptions); |
} |
/** |
* Renvoie le booleen définissant si l'on affiche le contexte ou non |
* @return bool true si on affiche le contexte sinon false. |
*/ |
public static function getContexte() { |
return self::$contexte; |
} |
64,14 → 80,16 |
} |
/** |
* Fonction de gestion des exceptions, remplace le handler par défaut |
* Fonction de gestion des exceptions, remplace le handler par défaut. |
* Si une boucle génère de multiple exception (ou erreur) identique une seule sera stockée. |
* @param Exception $e l'exception à traiter |
*/ |
public static function gererException(Exception $e) { |
// pour le moment on se contente de l'ajouter au tableau et de les afficher |
self::$exceptions[] = $e; |
// Log si nécéssaire |
self::loggerException($e); |
$cle = hash('md5', $e->getMessage().'-'.$e->getFile().'-'.$e->getLine()); |
if (!isset(self::$exceptions[$cle])) { |
self::$exceptions[$cle] = $e; |
self::loggerException($e); |
} |
} |
/** |
86,70 → 104,123 |
// Si un rapport d'erreur existe, création d'une exception |
if (error_reporting() != 0) { |
$e = new ErrorException($message, 0, $niveau, $fichier, $ligne); |
// que l'on donne au tableau d'exceptions |
self::$exceptions[] = $e; |
// Log si nécéssaire |
self::loggerException($e); |
self::gererException($e); |
} |
return null; |
} |
/** |
* Renvoie les exceptions au format (X)HTML |
* ou bien au format texte suivant le mode d'utilisation de PHP |
* Renvoie les exceptions au format (X)HTML ou bien au format texte suivant le mode d'utilisation de PHP. |
* @since 0.3 |
* @deprecated |
* @see getExceptionsFormatees() |
* @return string les exceptions formatées en texte ou (X)HTML. |
*/ |
public static function getExceptions() { |
return self::getExceptionsFormatees(); |
} |
/** |
* Renvoie les exceptions au format (X)HTML ou bien au format texte suivant le mode d'utilisation de PHP. |
* @since 0.3 |
* @return string les exceptions formatées en texte ou (X)HTML. |
*/ |
public static function getExceptionsFormatees() { |
$retour = ''; |
foreach (self::$exceptions as $cle => $e) { |
switch (self::$mode) { |
case self::MODE_CLI : |
$retour .= $e->getMessage()."\n"; |
$retour .= 'Fichier : '.$e->getFile()."\n"; |
$retour .= 'Ligne : '.$e->getLine()."\n"; |
if (self::getContexte()) { |
$retour .= 'Contexte : '."\n".print_r($e->getTraceAsString(), true)."\n"; |
} |
break; |
default: |
$retour .= '<div class="debogage">'."\n"; |
$retour .= $e->getMessage()."\n"; |
$retour .= '<span class="debogage_fichier">'.'Fichier : '.$e->getFile().'</span>'."\n"; |
$retour .= '<span class="debogage_ligne">'.'Ligne : '.$e->getLine().'</span>'."\n"; |
if (self::getContexte()) { |
$retour .= '<pre>'."\n"; |
$retour .= '<strong>Contexte : </strong>'."\n".print_r($e->getTraceAsString(), true)."\n"; |
$retour .= '</pre>'."\n"; |
} |
$retour .= '</div>'."\n"; |
if (self::getExceptionsNbre() > 0) { |
foreach (self::$exceptions as $cle => $e) { |
switch (self::$mode) { |
case self::MODE_CLI : |
$retour .= self::formaterExceptionTxt($e); |
break; |
default: |
$retour .= self::formaterExceptionXhtml($e); |
} |
// Nous vidons le tableau des exceptions au fur et à mesure pour éviter le réaffichage avec le destructeur. |
unset(self::$exceptions[$cle]); |
} |
// Nous vidons le tableau des exceptions au fur et à mesure |
unset(self::$exceptions[$cle]); |
} |
return $retour; |
} |
/** |
* Renvoie le tableau d'objets Exception générées par le script PHP triées du niveau de sévérité le plus élevé au moins élevé. |
* Format du tableau : |
* array{sévérité_1 = array{Exception1, Exception2, Exception3,...}, sévérité_1 = array{Exception1, Exception2, ...}, ...}; |
* ATTENTION : si vous utilisez cette méthode, c'est à vous de gérer l'affichage des Exceptions. Le gestionnaire d'exception |
* n'enverra plus rien au navigateur ou à la console. |
* @since 0.3 |
* @return array le tableau trié d'objet Exception. |
*/ |
public static function getExceptionsTriees() { |
$retour = array(); |
if (self::getExceptionsNbre() > 0) { |
foreach (self::$exceptions as $cle => $e) { |
$retour[$e->getSeverity()][] = $e; |
// Nous vidons le tableau des exceptions au fur et à mesure pour éviter le réaffichage avec le destructeur. |
unset(self::$exceptions[$cle]); |
} |
ksort($retour); |
} |
return $retour; |
} |
/** |
* Logue une exception donnée sous une forme lisible si self::logger vaut true. |
* @param Exception $e l'exception à logger |
*/ |
private static function loggerException($e) { |
private static function loggerException(Exception $e) { |
if (self::$logger) { |
$erreur = ''; |
$erreur .= $e->getMessage()."\n"; |
$erreur .= 'Fichier : '.$e->getFile()."\n"; |
$erreur .= 'Ligne : '.$e->getLine()."\n"; |
if (self::getContexte()) { |
$erreur .= 'Contexte : '."\n".print_r($e->getTraceAsString(), true)."\n"; |
} |
$erreur .= "\n"; |
Log::ajouterEntree('erreurs', $erreur); |
$message = self::formaterExceptionTxt($e); |
Log::ajouterEntree('erreurs', $message); |
} |
} |
/** |
* Formate en texte une exception passée en paramètre. |
* @since 0.3 |
* @param Exception l'exception à formater. |
*/ |
public static function formaterExceptionTxt(Exception $e) { |
$message = ''; |
$message .= $e->getMessage()."\n"; |
$message .= 'Fichier : '.$e->getFile()."\n"; |
$message .= 'Ligne : '.$e->getLine()."\n"; |
if (self::getContexte()) { |
$message .= 'Contexte : '."\n".print_r($e->getTraceAsString(), true)."\n"; |
} |
$message .= "\n"; |
return $message; |
} |
/** |
* Formate en (X)HTML une exception passée en paramètre. |
* @since 0.3 |
* @param Exception l'exception à formater. |
*/ |
public static function formaterExceptionXhtml(Exception $e) { |
$message = ''; |
$message .= '<div class="debogage">'."\n"; |
$message .= $e->getMessage()."\n"; |
$message .= '<span class="debogage_fichier">'.'Fichier : '.$e->getFile().'</span>'."\n"; |
$message .= '<span class="debogage_ligne">'.'Ligne : '.$e->getLine().'</span>'."\n"; |
if (self::getContexte()) { |
$message .= '<pre>'."\n"; |
$message .= '<strong>Contexte : </strong>'."\n".print_r($e->getTraceAsString(), true)."\n"; |
$message .= '</pre>'."\n"; |
} |
$message .= '</div>'."\n"; |
return $message; |
} |
/** |
* Lors de la destruction de la classe si des exceptions n'ont pas été affichées, et si le débogage est à true, elles sont |
* affichées. |
*/ |
public function __destruct() { |
// Si des erreurs n'ont pas été affichée nous forçons leur affichage |
if (self::$afficher && count(self::$exceptions) > 0) { |
echo self::getExceptions(); |
if (self::$afficher && self::getExceptionsNbre() > 0) { |
echo self::getExceptionsFormatees(); |
} |
} |
/branches/v0.2-buhl/framework/Controleur.php |
---|
5,18 → 5,21 |
* qui devrait être appelée de l'extérieur. |
* Elle est abstraite donc doit obligatoirement être étendue. |
* |
* @category PHP 5.2 |
* @category php5 |
* @package Framework |
* @author Aurélien PERONNET <aurelien@tela-botanica.org> |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org) |
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html> |
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt> |
* @copyright 2009 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
* @version SVN: $Id$ |
* @link /doc/framework/ |
* |
*/ |
abstract class Controleur { |
/** Variable statique indiquant que les tableaux _GET et _POST ont déjà été encodé au format de l'appli. */ |
private static $encodage = false; |
/** Registre global, normalement accessible partout */ |
private $registre; |
110,35 → 113,9 |
$_GET = $this->encoderTableau($_GET, Config::get('appli_encodage'), Config::get('sortie_encodage')); |
self::$encodage = true; |
} |
// traitement des magic quotes |
$this->verifierEtTraiterSlashTableauRequete(); |
} |
/** |
* Procédure vérifiant l'activation des magic quotes et remplace les slash dans les tableaux de requete |
*/ |
private function verifierEtTraiterSlashTableauRequete() { |
if ( get_magic_quotes_gpc() ) { |
if (!function_exists('stripslashes_deep')) { |
function stripslashes_deep( $value ) { |
return ( is_array($value) ) |
? array_map('stripslashes_deep', $value) |
: stripslashes($value); |
} // end of 'stripslashes_deep()' |
$_GET = array_map('stripslashes_deep', $_GET); |
$_POST = array_map('stripslashes_deep', $_POST); |
$_COOKIE = array_map('stripslashes_deep', $_COOKIE); |
} |
} |
} |
/** |
* Fonction récursive transcodant toutes les valeurs d'un tableau de leur encodage d'entrée vers un encodage de sortie donné |
* @param $tableau Array Un tableau de données à encoder |
* @param $encodage_sortie String l'encodage vers lequel on doit transcoder |
/branches/v0.2-buhl/framework/Log.php |
---|
5,10 → 5,11 |
* |
* @category PHP 5.2 |
* @package Framework |
* @author Aurélien PERONNET <aurelien@tela-botanica.org> |
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org) |
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html> |
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt> |
* @author aurelien <aurelien@tela-botanica.org> |
* @copyright 2009 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: $Id$ |
* @link /doc/framework/ |
*/ |
class Log { |
66,7 → 67,7 |
self::desactiverEcriture(); |
} |
} |
/** |
* Configure le Log à partir des paramêtres de config. |
*/ |
110,7 → 111,7 |
/** |
* Vérifie la présence d'un fichier dans le tableau, ses droits d'écriture, l'ouvre si nécessaire. |
* |
* |
* @param string $nomFichier le nom du fichier dont on doit vérifier la présence |
* @return boolean true si le fichier est ouvert ou maintenant accessible, false sinon |
*/ |