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 :

include or die function ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Par défaut include or die function ?
    bonjour,
    j'ai besoin d'inclure un fichier qui peut ou non exister.
    J'aimerai déclencher une fonction lorsque l'include a produit une erreur.
    Comment puis-je faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include("toto.php") or mafunction();
    Voilà mon problème.
    Je ne peux pas me permettre de tester avec file_exists(), trop gourmand en ressource.

    merci de votre aider

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 75
    Par défaut
    A moins de tester l'existence physique du fichier par file_exists, is_file etc ou d'enregistrer le nom de fichiers qui existent dans une base de données, tu n'as a priori pas d'autres solutions.

  3. #3
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    salut mbsofts,
    avec la gestion des exceptions, un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    try {
       include("toto.php");
    }
    catch (Exception $e) {
        mafunction();
    }
     
    ?>

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par thes32
    avec la gestion des exceptions, un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    try {
       include("toto.php");
    }
    catch (Exception $e) {
        mafunction();
    }
     
    ?>
    Ça ne fonctionnera que si le script inclus lève lui-même une exception. La gestion des erreurs (une inclusion ratée ne génère qu'une erreur) et celle des exceptions sont deux choses bien différentes et distinctes en PHP (voir le tutoriel : Exceptions et PHP5). A moins, bien sûr, de définir son propre gestionnaire d'erreur (fonction set_error_handler) et d'y lever une exception ; mais c'est tellement limité, entre autres, que je vous le déconseille.

    Dans la mesure où :
    Citation Envoyé par Documentation de la fonction include
    Si le fichier ne peut être inclus, FALSE est retourné et une erreur de niveau E_WARNING est envoyée.
    Le test est réalisable, mais sans contrôle sur le fichier, des warnings apparaîtront :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    if (/*@*/ include('je_n_existe_pas.php')) {
        echo 'inclusion ok';
    } else {
        echo 'inclusion ko';
    }
    Tout comme le résultat pourrait être faussé par une valeur de retour du script inclus :
    Appelant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    if (/*@*/ include('appele.php')) {
        echo 'inclusion ok';
    } else {
        echo 'inclusion ko';
    }
    Appelé (appele.php) :
    Niveau syntaxique, je rappelle que les include et compagnie ne sont pas des fonctions : ils peuvent être employés de la même manière que echo ou print, c'est à dire avec (type fonction) ou sans parenthèses. Pour utiliser le fameux or die, il faudrait "surparenthéser" l'expression d'inclusion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (include('toto.php')) or die('inclusion ko');
    (ce n'est qu'un exemple parce que l'include ici se rapproche du fonctionnement de require)

Discussions similaires

  1. [PHP 5.0] Include avec Die
    Par TroisR dans le forum Langage
    Réponses: 9
    Dernier message: 23/10/2012, 08h44
  2. Réponses: 3
    Dernier message: 01/09/2009, 07h38
  3. includes et erreur de syntaxe = "die" obligé ?
    Par Merfolk dans le forum Langage
    Réponses: 5
    Dernier message: 09/06/2008, 10h34
  4. [Système] PB d'include : "can't redefine function .."
    Par popovitch130 dans le forum Langage
    Réponses: 5
    Dernier message: 17/10/2007, 11h16
  5. Réponses: 8
    Dernier message: 16/11/2005, 14h11

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