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 :

Instanciation de TWIG [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2018
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2018
    Messages : 58
    Points : 48
    Points
    48
    Par défaut Instanciation de TWIG
    Bonjour,

    J'éprouve quelques difficultés a instancier TWIG ( sans le framework Symfony). J'obtiens ce message d'erreur :
    Uncaught Error: Class 'Twig\Loader\FilesystemLoader' not found
    Voici mon arborescence :

    Nom : screen.png
Affichages : 426
Taille : 13,4 Ko

    Et mon 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
    <?php
     
    namespace Lib\twig;
     
    class ControllerTwig
    {
     
        private $loader;
        private $twig;
        private $function;
     
        public function __construct()
        {
            $this->loader = new \Twig\Loader\FilesystemLoader(__DIR__ .'/../lib/twig/view');
            $this->twig = new \Twig\Environment($this->loader, []); 
    }
    Je sais que c'est un problème de chemin et ça m'énerve de ne pas réussir à installer quelque chose d'aussi simple !

    Quelqu'un peut m'aiguiller ?

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    t'es sûr de ça : namespace Lib\twig; ? Ça ne serait pas plutôt ça : namespace Lib\Twig;.
    Ensuite au démarrage de ton application tu dois charger une fois l'autoloader de Twig
    T'es obligé de remonter l'arborescence __DIR__ .'/../lib/twig/view' pour atteindre Twig ?
    Tu n'as pas en place un routeur global avec une redirection vers index.php ?

    Tien un peu de lecture : par ici

  3. #3
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2018
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2018
    Messages : 58
    Points : 48
    Points
    48
    Par défaut
    Salut rawsrc,

    Pour mon namespace oui je suis sûr. Je vais dans le namespace Lib puis le dossier twig ( que j'ai créé ) et dedans se trouve ma classe. Mon autoloader est déclaré dans mon index.php avec un simple "require "vendor/autoload.php";"

    T'es obligé de remonter l'arborescence __DIR__ .'/../lib/twig/view' pour atteindre Twig ? => En faite cette ligne me permet d'aller vers mon dossier template ( que j'ai appeler view) et qui se trouve dans le namespace Lib.

    J'ai réinstallé twig mais j'ai toujours le même problème pour l'instant

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    je ne comprends pas trop tes explications, tu parles d'autoloader et tu fais appel à un require ?
    Tiens un peu de lecture courte par ici, question autoloading, j'ai traité le sujet sur mon blog.

  5. #5
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2018
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2018
    Messages : 58
    Points : 48
    Points
    48
    Par défaut
    J'ai installé composer et utilisé son autoloader. Je me retrouve donc avec mon fichier composer.json qui contient ces quelques lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    {
        "autoload":{
     
            "psr-4":{
                "Control\\":"controller",
                "Lib\\":"lib"
            }
        },
        "require": {
            "twig/twig": "2.0"
        }
    }
    Ensuite dans mon index.php je fais un require "vendor/autoload.php"

    et viens ensuite la logique de mon routeur. Avant de m'attaquer à TWIG , j'affichais mes vues en utilsant ob_start. Tout fonctionnais à merveille mais dans un souci d'esthétique, je veux "géré" mes vues avec TWIG et malgrès la lecture de la DOC, je n'arrive pas à l'appeler et le pire c'est que je ne sais pas d'ou vient le problème

  6. #6
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2018
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2018
    Messages : 58
    Points : 48
    Points
    48
    Par défaut
    Bon après 2 jours j'ai enfin trouvé.

    J'ai installé TWIG avec POWERSHELL ( sous visual studio) et il se trouve que lorsque l'on rentre la cmd : composer require "twig/twig:^2.0" , le caractère "^" est échappé. J'ai recommencé en ligne de cmd avec Bash et tout fonctionne. Ça m'a vraiment rendu chèvre cette histoire.

    Bref l'important c'est que maintenant je sais d'où venait le problème et je ne referais pas la même erreur.

    Merci rawsrc de t'être intéressé à mon problème

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

Discussions similaires

  1. [Reflection] Instancier un objet
    Par bl@st dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 28/10/2008, 11h09
  2. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 13h44
  3. [JAR] instancier une Image contenue dans un jar
    Par celine31 dans le forum Général Java
    Réponses: 3
    Dernier message: 03/04/2005, 15h55
  4. [Débutant(e)]servlet qui instancie une classe personelle
    Par NiBicUs dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 08/02/2005, 12h00
  5. [VB.NET] Instanciation objet (sur class perso.)
    Par DaxTaz dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/05/2004, 11h07

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