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 :

Namespace avec MVC


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 176
    Points : 99
    Points
    99
    Par défaut Namespace avec MVC
    Bonjour,

    J'ai une erreur
    Error: Class 'controller\\WebService' not found in C:\\wamp64\\www\\ibanV4\\controller\\controller.php on line <i>55</i
    lorsque je mets ma class WebService dans mon dossier model, donc quand je veux faire du MVC. Et je ne comprend pas pourquoi...

    Si je mets ma class WebService dans le namespace global iban ça fonctionne.

    mon controller
    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
    <?php
    namespace controller;
     
    require_once __DIR__ . '/../vendor/autoload.php';
     
    use IBAN;
    use model\WebService;
     
    if(!empty($_GET)) {
        //extract($_POST);//extrait les données du POST et permet de les pouvoir appeler les variables contenuent dans le POST $variable
        $iban = $_GET['iban'];
        $myIban = new IBAN($iban);
     
        $errors = [];//Tableau qui contiendra les erreurs s'il y en a.
        $valid = [];//Tableau qui contiendra les messages valides
     
        //si le champs IBAN est vide, je mets le message d'erreur dans le tableau des erreurs
        if(empty($iban)) {
            array_push($errors, 'Vous devez rentrer votre IBAN!');
        }
     
        //Vérifiez un numéro IBAN. Tolère les espaces, les préfixes "IBAN ...", les tirets, les entrées en minuscules, etc.
        if(!$myIban->Verify()) {
            array_push($errors, 'IBAN invalide! Mauvais format!');
        }
     
        //Vérifier la somme de contrôle d'un IBAN - code modifié à partir de la classe Validate_Finance PEAR
        if(!$myIban->VerifyChecksum()) {
            array_push($errors, 'IBAN invalide! Erreur checksum!');
        }
     
        //Suggestion ou double suggestion si erreur ça dépend des cas et ça ne fonctionne pas toujours
        $suggestions = $myIban->MistranscriptionSuggestions($iban);
        if (is_array($suggestions)) {
            if (count($suggestions) == 1) {
                array_push($errors, "Vous voulez dire: " . $suggestions[0] . " ?");
            } elseif (count($suggestions) > 1) {
                array_push($errors, "ou peut-être: ");
                $done = 0;
                foreach ($suggestions as $suggestion) {
                    if ($done > 0) {
                        array_push($errors, "ou");
                    }
                    array_push($errors, "'" . $suggestion . "'");
                    $done++;
                }
            }
        }
     
        //si pas d'erreurs
        if($myIban->Verify() === true) {
            array_push($valid, "IBAN valide ");//S'il n'y a pas d'erreur
            $pays = $myIban->Country();
            if($pays=="BE") {//si l'IBAN commence par BE
                $ws = new WebService;//Utilisation de ma class WebService
                $bban = $ws->getBelgianBBAN($iban);//je le transforme en BBAN via la methode de ma class WebService
                array_push($valid, 'BBAN: ' . $bban);//je pousse le BBAN dans le tableau de messages valides
            }
        }
     
        //s'il y a des erreurs, je les stock dans une variable $response qui sera envoyée au navigateur
        if(count($errors)) {
            $response = ['errors'=>$errors];
            echo json_encode($response);//j'encode la réponse au format JSON
            exit;
        }
     
        //s'il y a des messages valides je les stock dans une variable $response qui sera envoyée au navigateur
        if(count($valid)) {
            $response = ['success'=>$valid];
            echo json_encode($response);//j'encode la réponse au format JSON
            exit;
        }
     
    }
    ma class WebService
    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
    <?php
    namespace model;
     
    require_once __DIR__ . '/../vendor/autoload.php';
     
    use IBAN as Iban;
    use SoapClient;
     
    class WebService extends Iban
    {
        public function getBelgianBBAN($iban)
        {
            $url = "http://www.ibanbic.be/IBANBIC.asmx?WSDL";
            $client = new SoapClient($url);
            $bban = $client->getBelgianBBAN(array('Value' => $iban))->getBelgianBBANResult;
            return $bban;
        }
    }
    la structure de mon programme
    Nom : iban.JPG
Affichages : 215
Taille : 16,8 Ko

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    bonjour,
    dans controller faudra inclure le fichier WebService.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    namespace controller;
     
    require_once __DIR__ . '/../vendor/autoload.php';
     
    require_once dirname(__DIR__).'/model/WebService.php'; //<-
     
     
    use IBAN;
    use model\WebService;
    Il existe une méthode plus élégante d'inclusion de tous fichiers qui consiste à utiliser l'autoloader de composer.json. Dans la section autoload du composer.json tu peux décider de charger toutes les classes qui ont un namespace qui commencent par model, controller se trouvant respectivement dans les dossiers controller et model:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    {
     
     
        "autoload": {
          "psr-4": {
              "controller\\": "controller/",
              "model\\": "model/"
          }
        }
    }
    ensuite régéner un nouveau fichier d'autoload du composer en tapant la commande : composer dumpautoload .
    en utilisant l'autoloader du composer tu n'auras plus besoin d'inclure le fichier un a un.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 176
    Points : 99
    Points
    99
    Par défaut
    Merci, ça fonctionne très bien avec la méthode élégante.
    ça fait un moment que je cherche comment faire fonctionner ça.

    Un grand MERCI

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

Discussions similaires

  1. [Xpath] [Java] Comment ignorer les namespaces avec XPath?
    Par azerr dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 19/02/2008, 09h23
  2. [Smarty] Utilisation de Smarty avec MVC
    Par bendede dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 15/11/2007, 15h12
  3. Problème avec MVC
    Par Yoteco dans le forum MVC
    Réponses: 23
    Dernier message: 15/03/2007, 19h42

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