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 :

Abstract, vérification de méthodes dynamiques


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de Gecko
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Décembre 2008
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Décembre 2008
    Messages : 499
    Par défaut Abstract, vérification de méthodes dynamiques
    Bonjour à tous!

    J'ai actuellement une classe abstract qui définit des méthodes obligatoires pour que les API soient "runnable". Le problème que j'ai c'est que quand ces méthodes sont absente j'ai une erreur fatale, je voudrais ne plus avoir cette erreur et afficher moi même un message parsé.

    Voici ma classe abstract:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    abstract class runnable {
        abstract protected function __setConfig();
        abstract public function __run(api $api);
     
        public function run(api $api){
            $this->__setConfig();
            $this->__run($api);
        }
    }
    Ma classe de test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class test extends runnable { }
    Mon système de chargement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // Instanciation de la classe
    $api = new $appName;
    // Test de l'instance de l'API (doit être runnable)
    if($api instanceof runnable) {
        // Démarrage de l'API
        $api->run($this);
        // Définition du langage de sortie
        $output = in_array($this->config->output, $api->config->outputs) ? $this->config->output : 'json';
        // Affichage du résultat
        $this->display($api->data, $output);
    } else {
      $this->display(array('error' => array('id' => '0x06', 'msg' => 'API is not runnable')),$this->config->output);
    }
    Le problème surviens à l'instanciation, je n'arrive pas à détecter dynamiquement si les méthodes de runnable sont bien déclarées dans test, du coup j'ai une erreur fatale.

    Le truc c'est que ma classe abstract sera amenée à évoluer et j'aimerai trouver un moyen de tester toutes les méthodes de manière automatique avant d'instancier test.

    Je ne sais pas si je suis assez clair, n'hésitez pas à me poser vos questions

    - Gecko

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Utilise la méthode isInstantiable() de la classe ReflectionClass.

  3. #3
    Membre très actif
    Avatar de Gecko
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Décembre 2008
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Décembre 2008
    Messages : 499
    Par défaut
    Merci pour ta réponse, effectivement je n'ai pas pensé à cette possibilité, néanmoins cela ne semble pas fonctionner

    Si il manque une méthode déclarée dans ma méthode abstract j'ai toujours une erreur fatale

    Voici le code que j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $reflectionClass = new ReflectionClass($appName);
    echo $reflectionClass->IsInstantiable();

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    C'est normal, c'est l'erreur survient non pas au test, mais à la définition même de la classe.

    Ta classe Test doit être déclarée abstract si elle n'implémente pas toutes les fonctions de runnable, sinon tu n'as pas le droit de la laisser vide.

    Est-ce que tu peux expliquer, au-delà de ce problème précis, ce que tu cherches à faire? Ça aidera à trouver la meilleure solution.

Discussions similaires

  1. Erreur méthode dynamique
    Par wind_vinch dans le forum VB.NET
    Réponses: 5
    Dernier message: 24/08/2011, 22h03
  2. Vérification de champs dynamiques de formulaire
    Par markouch dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/11/2007, 18h56
  3. Erreur méthode dynamique
    Par wind_vinch dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/05/2007, 10h56
  4. créer une méthode dynamique delphi
    Par ougueye dans le forum Delphi
    Réponses: 4
    Dernier message: 09/04/2007, 14h33
  5. Appeler une méthode dynamiquement
    Par doof dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/01/2005, 23h15

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