IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

la classe business/Exception n'existe pas et d'autres erreurs dans mes logs [PHP 5.6]


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut la classe business/Exception n'existe pas et d'autres erreurs dans mes logs
    Bonjour,

    Je suis occupé à modifier un site qui a été développé par plusieurs personnes, entre autre par moi (à 90%), mais par d'autres personnes aussi.

    J'ai plusieurs erreurs dans mes logs qui concerne la génération d'un fichier Excel avec PHPExcel :

    [14-Jan-2018 20:27:01 Europe/Brussels] PHP Fatal error: Uncaught exception 'Exception' with message 'la classe business/Exception n'existe pas' in /Applications/MAMP/htdocs/stageoff_local/excel/Autoloader.class.php:35
    Stack trace:
    #0 [internal function]: stageOff\Autoloader::_autoload('stageOff\\busine...')
    #1 /Applications/MAMP/htdocs/stageoff_local/excel/business/DocumentExcel.class.php(154): spl_autoload_call('stageOff\\busine...')
    #2 /Applications/MAMP/htdocs/stageoff_local/excel/business/DocumentExcel.class.php(170): stageOff\business\DocumentExcel->getTypeOfficine('378')
    #3 /Applications/MAMP/htdocs/stageoff_local/excel/business/DocumentExcelUnique.class.php(24): stageOff\business\DocumentExcel->readStage('378')
    #4 /Applications/MAMP/htdocs/stageoff_local/excel/controller/GeneratorDocument.class.php(40): stageOff\business\DocumentExcelUnique->__construct('2', '378')
    #5 /Applications/MAMP/htdocs/stageoff_local/excel/get_link_excel.php(10): stageOff\controller\GeneratorDocument::getLinkDocumentUnique('378', '2')
    #6 {main}
    thrown in /Applications/MAMP/htdocs/stageoff_local/excel/Autoloader.class.php on line 35
    J'utilise la version PHP 5.6.31

    Voici le code de l'auto loader :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
    namespace stageOff;
    use Exception;
    use stageOff\model\config;
    /**
     * Classe static pour charger les classes utilisées dans l'app
     * 
     * @author 
     */
    class Autoloader
    {
     
        public static function register()
        {
            spl_autoload_register(array(__CLASS__, '_autoload'));
        }
     
        private static function _autoload($class){
            if(strpos($class, __NAMESPACE__ . "\\") === 0)
            {        
                $class = str_replace(__NAMESPACE__ . '\\', '', $class);
                $class = str_replace('\\', '/', $class);
                if(file_exists(config::read('PATH'). '/' . $class . '.class.php'))
                {
                    require_once $class . '.class.php';
                }
                elseif(file_exists($class . '.class.php'))
                {
                    require_once $class . '.class.php';
                }
                elseif(file_exists('../' . config::read('PATH'). '/' .$class . '.class.php'))
                {
                    require_once $class . '.class.php';
                }
                else
                {
                    throw new Exception ('la classe ' . $class . ' n\'existe pas');
                }
            }
        }
    }
    Je vous joins également d'autres fichiers cités dans les erreurs :

    DocumentExcel.class.php(

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    <?php
    namespace stageOff\business;
    use stageOff\model\config;
    use stageOff\data\DatabaseAccess;
    /**
     * Description of DocumentExcel
     *
     * @author Alexandre
     */
    abstract class DocumentExcel {
        const TYPE_QUESTIONNAIRE_ETUDIANT = 1;
        const TYPE_QUESTIONNAIRE_MDS = 2;
        const SAVE_FOLDER = 'evaluation';
        const STAGE_OFFINICAL = 1;
        const STAGE_HOSPITALIER = 2;
        const DOCUMENT_ETUDIANT = 3;
        const PHARMACIE_OFFICINAL = 1;
        const PHARMACIE_HOSPITALIERE = 2;
     
        /**
         * @var PHPExcel objet document excel 
         */
        private $_excel_doc;
     
        /**
         * @var int Type du questionnaire = Etudiant ou MDS; 
         */
        private $_type_questionnaire;
     
        /**
         * @var DatabaseAccess 
         */
        private $_db_access;
     
        /**
         * 
         * @param int $type_questionnaire Type du questionnaire voulu
         * @throws Exception
         */
        public function __construct($type_questionnaire) {
            $this->setTypeQuestionnaire($type_questionnaire);
            $this->initDbAccess();
        }
     
    //<editor-fold defaultstate="collapsed" desc="Generate Doc">
        /**
         * Generer le document excel
         */
        public function generateDocument() {
            $this->initExcelDoc();
            $this->addContain();
            $this->saveDocument();
        }
     
        protected abstract function addContain();
     
        public function initExcelDoc() {
            $this->setExcelDoc(new \PHPExcel());
        }
     
        protected function createSheetExcel($stage){
            if($this->getTypeQuestionnaire() == self::TYPE_QUESTIONNAIRE_ETUDIANT)
            {
                return new SheetExcelEtudiant($stage);
            }
     
            return new SheetExcelMDS($stage);
        }
     
        /**
         * Fonction retirant les accents d'une chaine de caractère
         * @param string $input
         * @return string
         */
        protected function deleteAccent($input) {
            $str = htmlentities($input, ENT_NOQUOTES, 'utf-8');
            $str = preg_replace('#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
            $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. '&oelig;'
            return preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères
        }
     
        /**
         * Attache une feuille excel au document excel
         * @param Worksheet $sheet La feuille excel à attacher
         */
        protected function attachSheetToDoc($sheet) {
            $this->getExcelDoc()->addSheet($sheet);
        }
     
        /**
         * Détache une feuille excel du document si celle-ci est attaché
         * @param Worksheet $sheet Feuille excel à détacher
         * @return boolean Retourne vrai si la feuille était attaché et a bien été détaché
         * ou false si la feuille n'était pas attaché
         */
        protected function detachSheetToDoc($sheet) {
            $sheet_index = $this->getExcelDoc()->getIndex(
                    $this->getExcelDoc()->getSheetByName($sheet->getTitle()));
            if($sheet_index === NULL)
            {
                return FALSE;
            }
            $this->getExcelDoc()->removeSheetByIndex($sheet_index);
            return TRUE;
        }
     
        protected function saveDocument() {
            $writer = new \PHPExcel_Writer_Excel2007($this->getExcelDoc());
            $writer->save(config::read('ROOT') . $this->getSavePath() .
                    $this->getFileName() .'.xlsx');
        }
    //</editor-fold>
     
    //<editor-fold defaultstate="collapsed" desc="getter&setter">
        /**
         * Retourne le lien vers le document excel
         * @return string
         */
        public function getLink() {
            return './' . $this->getSavePath() .
                    $this->getFileName() .'.xlsx';
        }
     
        /**
         * Retourne le nom du document excel
         * @return string
         */
        public abstract function getFileName();
     
        /**
         * Retourne le chemin relative vers le dossier on sont stocker les Excels
         * @return string
         */
        protected abstract function getSavePath();
     
        /**
         * Retourne le type du lieu de stage qui peut etre soit officinal ou hospitalier
         * @param int $id_stage identifiant du stage
         * @return int
         * @throws Exception
         */
        protected function getTypeOfficine($id_stage) {
            $type_officine = $this->getDbAccess()->getTypeOfficine($id_stage);
            if($type_officine == self::PHARMACIE_OFFICINAL)
            {
                return self::STAGE_OFFINICAL;
            }
            elseif($type_officine == self:: PHARMACIE_HOSPITALIERE)
            {
                return self::STAGE_HOSPITALIER;
            }
            else
            {
                throw new Exception('Aucun type de questionnaire trouvé pour ce stage');
            }
        }
     
        /**
         * Retourne un stage de la base de donnée par rapport à un idée et au type 
         * du questionnaire
         * @param int $id_stage identifiant du stage
         * @return Stage
         * @throws Exception
         */
        protected function readStage($id_stage) {
            if($this->getTypeQuestionnaire() == self::TYPE_QUESTIONNAIRE_ETUDIANT) {
                return $this->getDbAccess()->getStage($id_stage, self::DOCUMENT_ETUDIANT);
            }
     
            return $this->getDbAccess()->getStage($id_stage, $this->getTypeOfficine($id_stage));
        }
     
     
        public function getExcelDoc() {
            return $this->_excel_doc;
        }
     
        public function setExcelDoc($excel_doc) {
            $this->_excel_doc = $excel_doc;
            $this->_excel_doc->removeSheetByIndex(0);
        }
     
        public function getTypeQuestionnaire() {
            return $this->_type_questionnaire;
        }
     
        /**
         * 
         * @param int $type_questionnaire 
         * @throws Exception
         */
        public function setTypeQuestionnaire($type_questionnaire) {
            if(!$this->typeQuestionnaireExist($type_questionnaire))
            {
                throw new Exception("Type du questionnaire inconnu!");
            }
            $this->_type_questionnaire = $type_questionnaire;
        }
     
        /**
         * Verifie que le type du questionnaire existe
         * @param int $type_questionnaire type du questionnaire
         * @return boolean
         */
        protected function typeQuestionnaireExist($type_questionnaire) {
            return $type_questionnaire == self::TYPE_QUESTIONNAIRE_ETUDIANT ||
                    $type_questionnaire == self::TYPE_QUESTIONNAIRE_MDS;
        }
     
        public function initDbAccess() {
            $this->setDbAccess(new DatabaseAccess());
        }
     
        public function getDbAccess() {
            return $this->_db_access;
        }
     
        public function setDbAccess($db_access) {
            $this->_db_access = $db_access;
        }
    //</editor-fold>
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <?php
    namespace stageOff\business;
    /**
     * Description of DocumentExcelUnique
     *
     * @author 
     */
    class DocumentExcelUnique extends DocumentExcel{
        const SAVE_SUBFOLDER_ETU = 'evaluation_par_etudiant';
        const SAVE_SUBFOLDER_MDS = 'evaluation_par_mds';
        
        /**
         * @var SheetExcel Feuille excel lié au document 
         */
        private $_sheet_excel;
        
        /**
         * 
         * @param int $type_questionnaire Type du questionnaire voulu
         * @param int $id_stage Identifiant du stage lié au document
         */
        public function __construct($type_questionnaire, $id_stage) {
            parent::__construct($type_questionnaire);
            $stage = $this->readStage($id_stage);
            $this->setSheetExcel($this->createSheetExcel($stage));
        }
        
        protected function addContain() {
            $this->getSheetExcel()->createSheet($this->getExcelDoc());
        }
    
    //<editor-fold defaultstate="collapsed" desc="getter&setter">
        /**
         * Retourne le nom du document excel
         * @return string
         */
        public function getFileName() {
            $info_etu = 'etu_' . $this->deleteAccent(
                    $this->getSheetExcel()->getStage()->getEtudiant());
            $info_mds = 'mds_' . $this->deleteAccent(
                    $this->getSheetExcel()->getStage()->getMaitreDeStage());
            $periode = ' ' . $this->getSheetExcel()->getStage()->getPeriode();
            
            if($this->getTypeQuestionnaire() == self::TYPE_QUESTIONNAIRE_ETUDIANT)
            {
                return $info_etu . '-' . $info_mds . $periode;
            }
            
            //Questionnaire Des MDS
            if($this->getTypeOfficine($this->getSheetExcel()->getStage()->getId()) 
                    == self::STAGE_OFFINICAL)
            {
                return $info_mds . '-' . $info_etu . $periode . ' (Officinal)';
            }
            
            return $info_mds . '-' . $info_etu . $periode . ' (Hospitalier)';
        }
    
        /**
         * Retourne le chemin relative vers le dossier on sont stocker les Excels
         * @return string
         */
        protected function getSavePath() {
            $path = self::SAVE_FOLDER;
            if($this->getTypeQuestionnaire() == self::TYPE_QUESTIONNAIRE_ETUDIANT
                    && self::SAVE_SUBFOLDER_ETU != '')
            {
                $path .= '/'. self::SAVE_SUBFOLDER_ETU;
            }
            elseif ($this->getTypeQuestionnaire() == self::TYPE_QUESTIONNAIRE_MDS
                    && self::SAVE_SUBFOLDER_MDS != '') {
                $path .= '/'. self::SAVE_SUBFOLDER_MDS;
            }
            
            return $path . '/';
        }
        
        /**
         * 
         * @return SheetExcel
         */
        public function getSheetExcel() {
            return $this->_sheet_excel;
        }
        
        /**
         * 
         * @param ExcelSheet $sheet
         */
        public function setSheetExcel($sheet) {
            $this->_sheet_excel = $sheet;
        }
    //</editor-fold>   
    }
    Merci d'avance pour l'aide.

    bee

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 440
    Points : 15 814
    Points
    15 814
    Par défaut
    c'est l'appel d'une instance de la classe Exception qui pose problème dans le fichier excel/business/DocumentExcel.class.php ligne 154
    essayez de rajouter un \ pour avoir cela :

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut,

    Merci pour votre réponse.

    Cela a en effet résolu le problème.

    J'ai maintenant un message d'erreur clair et cohérent.

    Encore un grand merci et bonne journée.

    bee

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Base de données n'existe pas sur un autre PC
    Par kortobi dans le forum JDBC
    Réponses: 2
    Dernier message: 08/10/2014, 20h31
  2. Pas de déclenchement d'erreur dans ma procédure
    Par diblasio dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 06/05/2014, 23h46
  3. Je ne trouve pas ou est l'erreur dans mon programme
    Par stich51 dans le forum Général Python
    Réponses: 3
    Dernier message: 02/05/2014, 17h36
  4. Erreurs dans mes tables que je n'arrive pas à corriger
    Par simondu43 dans le forum Débuter
    Réponses: 2
    Dernier message: 18/05/2009, 23h03
  5. Réponses: 4
    Dernier message: 15/03/2007, 21h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo