Partage
  • Partager sur Facebook
  • Partager sur Twitter

Répertoire de l'application

    23 avril 2017 à 13:10:54

    Bonjour,

    Je m'appelle Daphnée. J'ai décidé de me lancer dans de nouvelles études en cours du soir (BAC+3 en informatique). Tout se passait plus ou moins bien jusqu'à l'année passée. Aujourd'hui, je n'arrive plus à gérer le boulot, les cours et mes filles. On nous demande trop d'autonomie sans nous donner des solutions.

    Je dois réaliser une application MVC connectée à une base de données en essayant d'être la plus générique possible. Au lieu de créer un formulaire bêtement en HTML, je dois passer par des classes et PHP. J'avance petit à petit. Actuellement, je n'ai plus cours de Web. Je dois présenter cette application finalisée le plus rapidement possible. Malheureusement, je bloque sur certains points.

    Je dois notamment pourvoir mettre mon application dans un autre répertoire ou sur un serveur réel sans devoir changer quoi que ce soit. J'y arrive grâce à des constantes et une classe qui charge toutes les autres. Malheureusement, je dois toujours changer une des constantes pour que tout fonctionne.

    On m'a suggéré d'utiliser le chemin traduit. Je n'y arrive pas. J'ai les erreurs ci-dessous et un résultat nulle pour cette constante.

    Notice: Use of undefined constant PATH_TRANSLATED - assumed 'PATH_TRANSLATED'

    Notice: Undefined index: PATH_TRANSLATED

    Auriez-vous la solution?

    <?php
        define('REPERTOIRE_APPLICATION_STATIQUE', 'php_object/2016_2017/tests/repertoire_application/');
        define('RACINE_SERVEUR', $_SERVER['DOCUMENT_ROOT']);
        define('RACINE_APPLICATION', RACINE_SERVEUR . REPERTOIRE_APPLICATION_STATIQUE);
        define ('REPERTOIRE_APPLICATION_DYNAMIQUE', $_SERVER[PATH_TRANSLATED]);
        $tableau = array
        (
            'repApStat' => REPERTOIRE_APPLICATION_STATIQUE,
            'racServ' => RACINE_SERVEUR,
            'racAp' => RACINE_APPLICATION,
            'repApDyn' => REPERTOIRE_APPLICATION_DYNAMIQUE
        );    
        var_dump($tableau);
    • Partager sur Facebook
    • Partager sur Twitter
    D'AVANCE, MERCI BIEN À VOUS!
    Anonyme
      23 avril 2017 à 13:52:36

      Salut,

      perso la racine que je nomme ROOT, je la définis dans l'index.php

      define('ROOT', __DIR__ . '/');

      pour info :

      __FILE__ est une constante php qui contient le chemin du fichier dans lequel __FILE__ est appelé.

      par exemple : __FILE__ peut être égal à /var/www/html/index.php

      pour avoir le dossier on peut faire :

      dirname(__FILE__) qui donnera /var/www/html ou C:\site\www\html si tu es sous windows.

      la constante __DIR__ est équivalente à dirname(__FILE__)

      Tu remarqueras que ces constantes ne mettent pas de slash à la fin, il faut donc le rajouter

      Dans ton bout de code tu ranges ça dans un tableau etc. mais ce n'est pas utile. En théorie ton fichier index.php se trouve à la racine de ton projet et est le point d'entrée de ton programme.

      Si tu met dans ce fichier index.php :

      define('ROOT', __DIR__ .'/');

      la constante ROOT sera visible partout et contiendra toujours la même chose.

      si tu veux inclure un fichier tu n'auras qu'à faire :

      include(ROOT . 'models/model_user.php');

      et ce code fonctionnera quelques que soit l'endroit où est stocké ton projet.


      A+

      -
      Edité par Anonyme 23 avril 2017 à 13:55:28

      • Partager sur Facebook
      • Partager sur Twitter
        24 avril 2017 à 11:45:01

        Bonjour MetallicAAA,

        Lorsque j'affiche mes constantes, j'obtiens des / pour la séparation des répertoires.

        array (size=4)

           'repApStat' => string 'php_object/2016_2017/tests/repertoire_application/' (length=50)

           'racServ' => string 'C:/wamp/www/' (length=12)

           'racAp' => string 'C:/wamp/www/php_object/2016_2017/tests/repertoire_application/' (length=62)

           'repApDyn' => null

        Lorsque j'affiche tes constantes, j'obtiens des \ sauf le / qui est défini dans la constante ROOT.

        array (size=2)

           'dossier' => string 'C:\wamp\www\php_object\2016_2017\tests\repertoire_application\v02/' (length=66)

           'fichier' => string 'C:\wamp\www\php_object\2016_2017\tests\repertoire_application\v02\index.php' (length=75)

        Étant donné que tu utilises un / pour 'models/model_user.php' et que j'utilises moi aussi des / dans la définition de mes autres constantes, je suppose qu'il faut réaliser un remplacement des \ par des /.

        Est-ce que tu pourrais me le confirmer?


        <?php
            define('DOSSIER', __DIR__ . '/');
            define('FICHIER', __FILE__);
        
            $tableau = array
            (
                'dossier' => DOSSIER,
                'fichier' => FICHIER
            );    
            var_dump($tableau);



        -
        Edité par Daphnee2Secret2 24 avril 2017 à 13:15:58

        • Partager sur Facebook
        • Partager sur Twitter
        D'AVANCE, MERCI BIEN À VOUS!
          1 mai 2017 à 15:10:28

          Bonjour,

          J'ai obtenu une nouvelle information. Apparemment, la plupart des serveurs tournent en Linux. Je ne sais pas si cela a son importance. Je vous renvoie aussi à ma question précédente.

          Quelle est la meilleure solution (fonctionnement sous Windows et sous Linux)?

          • Partager sur Facebook
          • Partager sur Twitter
          D'AVANCE, MERCI BIEN À VOUS!
            1 mai 2017 à 16:01:26

            Pour corriger ton erreur, il suffit  de lire ce que t'indique PHP. (Ne pas voir ici une indication de mauvaise foi, mais ce que PHP t'indique peut réellement t'aider :

            Notice: Use of undefined constant PATH_TRANSLATED - assumed 'PATH_TRANSLATED'

            C'est à dire :

            Je ne connais pas 

            $_SERVER[PATH_TRANSLATED];

            mais peut-être que si tu m'indiquais :

            $_SERVER["PATH_TRANSLATED"];

            je connaîtrais peut-être mieux ^^

            • Partager sur Facebook
            • Partager sur Twitter
            La seul chance qu'on a de gagner la guerre, c'est qu'en face ils soient aussi cons qu'ici !
            Anonyme
              1 mai 2017 à 16:34:44

              @Daphnee2Secret2

              le mix \ et / n'a pas d'importance pour les includes, require etc.

              Mais si tu veux faire quelques chose de propre, il existe la constante DIRECTORY_SEPARATOR

              <?php
              echo DIRECTORY_SEPARATOR;
              // sous windows ce code affichera \
              // sous linux ce code affichera /

              ça donnerai

              define('ROOT', __DIR__ . DIRECTORY_SEPARATOR);
              include(ROOT . 'models'.DIRECTORY_SEPARATOR.'user.php');
              
              
              

              enfin bon je ne pense pas que cela ait d'importance car j'ai regardé le code source wordpress et ils ne s'embêtent pas avec les DIRECTORY_SEPARATOR.

              A+

              -
              Edité par Anonyme 1 mai 2017 à 16:35:32

              • Partager sur Facebook
              • Partager sur Twitter
                1 mai 2017 à 21:22:51

                Bonsoir Etruiaz,

                Je te remercie pour l'explication et la correction. Je ne suis pas très douée en anglais. En outre, je débute en programmation. Il est difficile de savoir quand on doit mettre des ' ou des " dans le passage de paramètres. Cependant, j'aurais pu trouver cette erreur seule en étant moins pressée. Malheureusement, on doit avancer rapidement.

                Bonsoir MetallicAAA,

                Je te remercie pour le complément d'informations. Je teste tout cela prochainement. Je reviens vers vous dès que possible. En effet, j'aimerais quand même donner une solution. Vous m'avez aidée, c'est bien. Je souhaiterais aider à mon tour. Des fois, en programmation, on cherche des heures pour une petite connerie.

                • Partager sur Facebook
                • Partager sur Twitter
                D'AVANCE, MERCI BIEN À VOUS!

                Répertoire de l'application

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown