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 :

require et require_once


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Points : 14
    Points
    14
    Par défaut require et require_once
    Bonjour,
    Je ne comprends pas vraiment comment marche les methodes telles que include, require et les _once.
    Je travaille donc en PHP5 donc en POO.
    En gros quand une de mes classes utilises un objet d'une autre classe alors je l'importe avec require_once.
    Mon souci c'est que des fois quand j'addresse mes classe depuis la racine de mon site ca marche, des fois quand je le fais de façon relatif ca marche et des fois ca ne marche que si j'addresse carrement depuis le disque dur C:/chemin vers le repertoire stockant l'application/monSite/repertoire.MaClasse.php .

    Je ne comprends pourquoi des fois je peux ecrire le chemin depuis la racine de mon site et des fois non.

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 186
    Points
    186
    Par défaut
    Bonjour,

    Montres nous ton code vite fait que l'on puisse te dire où est l'erreur
    Savoir si tu prends en compte les dossier / sous dossier, dossier parents ...

    GoT

  3. #3
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    La différence entre require et include est que require va te générer une "fatal error" si le fichier requis ne peux être importé.

    Ensuite le "_once" permet de n'inclure un fichier qu'une fois donc quand tu as un gros projet, dans la plupart dans cas tu utilises require_once (afin de ne pas te soucier de savoir si un fichier a ou pas déjà été inclus dans le script courant).

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Bonjour,

    Une première lecture dans cet excellent site () pourra t'expliquer les fonctions : http://php.developpez.com/faq/?page=...riptdansscript
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Points : 14
    Points
    14
    Par défaut
    J'ai mis un exmeple en pièce jointe avec mon code et l'arborescence de mon appli web.
    J'ai en résultat ceci :


    Warning: require_once(H:/TRAITEMENT/WORKPSACE/workspacePHP/SitePsycho/persistence/ArticleDAO) [function.require-once]: failed to open stream: No such file or directory in H:\TRAITEMENT\WORKPSACE\workspacePHP\SitePsycho\persistence\FactoryDAO.php on line 2

    Fatal error: require_once() [function.require]: Failed opening required 'H:/TRAITEMENT/WORKPSACE/workspacePHP/SitePsycho/persistence/ArticleDAO' (include_path='.;C:\php5\pear') in H:\TRAITEMENT\WORKPSACE\workspacePHP\SitePsycho\persistence\FactoryDAO.php on line 2
    Images attachées Images attachées  

  6. #6
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Ben, il est pourtant causant :
    H:/TRAITEMENT/WORKPSACE/workspacePHP/SitePsycho/persistence/ArticleDAO No such file or directory
    Le fichier n'existe pas.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Points : 14
    Points
    14
    Par défaut
    Oui j'ai fait une erreur dans le nommage.

    On reprend la meme chose pour le meme fichier à inclure.

    Si je met require_once '/SitePsycho/persistence/ArticleDAO.php';

    Ca plante

    par contre si je met require_once 'H:/TRAITEMENT/WORKPSACE/workspacePHP/SitePsycho/persistence/ArticleDAO.php';

    ca marche

    Je comprends pas pourquoi

  8. #8
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par kaljerhom Voir le message
    Oui j'ai fait une erreur dans le nommage.

    On reprend la meme chose pour le meme fichier à inclure.

    Si je met require_once '/SitePsycho/persistence/ArticleDAO.php';

    Ca plante

    par contre si je met require_once 'H:/TRAITEMENT/WORKPSACE/workspacePHP/SitePsycho/persistence/ArticleDAO.php';

    ca marche

    Je comprends pas pourquoi
    Ton chemin relatif n'est pas bon.
    Je ne connais pas l'architecture de ton site, mais peut-être dois-tu revoir le chemin, du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once '../../SitePsycho/persistence/ArticleDAO.php';
    Ou alors ton fichier ne fais carrément pas partie de l'arborescence web, auquel cas le chemin absolu est nécessaire.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Points : 14
    Points
    14
    Par défaut
    Tu as l'arboresence de mon site dans le fichier miniature attaché à un de mes messages précédents.

    Un autre exemple dans ce code :

    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
    <?php
     
    /**
     * usine de fabrication de mes commandes (suivant le paramètre action instancie la bonne command)
     * 
     * @author Kaljerhom
     * 
     * User		Date		Comments
     * Kal		10/12/2008	création de la classe
     */
     
    class FactoryCommand
    {
    	public static function getCommand($action)
    	{
    		if($action == "login")
    		{
    			return new CommandeAuthentification();
    		}
    		else if($action == "createArticle")
    		{
    			return new CommandeCreeArticle();
    		}
    	}
    }
    ?>
    Quand je fais appel à ma commandeAuthentification à partir de ce fichier tout se passe bien.
    Alors que si je fais appel à COmmandeCreeArticle alors ca hurle qu'il ne trouve pas le script.

    Je comprends pas.

Discussions similaires

  1. [PEAR] Fatal error: require_once(): Failed opening required 'HTML/Table/Storage.php'
    Par arakscons dans le forum Bibliothèques et frameworks
    Réponses: 14
    Dernier message: 16/09/2014, 10h36
  2. [Sécurité] Pourquoi require_once() et pas require() ?
    Par JackBeauregard dans le forum Langage
    Réponses: 3
    Dernier message: 08/11/2006, 14h42
  3. Pb PHP 5 et require, require_once
    Par 12_darte_12 dans le forum Langage
    Réponses: 4
    Dernier message: 12/05/2006, 16h35
  4. [Forms6i], required item
    Par orcl dans le forum Forms
    Réponses: 4
    Dernier message: 25/05/2004, 17h31
  5. Bug sur la prorpiété required d'un TField avec ADO ???
    Par denrette dans le forum Bases de données
    Réponses: 6
    Dernier message: 04/11/2003, 11h04

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