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 :

L'erreur est une erreur.


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Avatar de Skyxia
    Homme Profil pro
    Ingénieur réseau & sécurité
    Inscrit en
    Mai 2016
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur réseau & sécurité
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2016
    Messages : 359
    Points : 627
    Points
    627
    Billets dans le blog
    3
    Par défaut L'erreur est une erreur.
    Bonjour à tous (magnifique titre explicite n'est-ce pas ? ^^)

    Voici mon problème, j'ai un fichier nommé "LemonWayProcess.php" qui contient beaucoup de choses mais nous ce qui nous intéresse c'est ceci :

    Code PHP : 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
     
    /**
         * Set Error Response
         * @param String  $code
         * @param String  $message
         *
         * @return String json
         */
        private static function setErrorResponse($code, $message)
        {
            $response = array(
                'status' => false,
                'error' => array(
                    'code' => $code,
                    'message' => $message
                )
            );
            return json_encode($response);
        }
     
        /**
         * Set Success Response
         *
         * @param array   $data
         *
         * @return String json
         */
        private static function setSuccessResponse($data)
        {
            if (!is_array($data)) {
                $data = array(
                    $data);
            }
            $response = array(
                'status' => true,
                'success' => array(
                    'data' => $data
                )
            );
            return json_encode($response);
        }

    et ceci :

    Code PHP : 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
     
         * @param Int    $firtWalletId
         * @param Int    $seconWalletId
         * @param Double $amount
         * @param String $message
         *
         * @return String json
         */
        public function sendPayment($firtWalletId, $seconWalletId, $amount, $message = '')
        {
     
            $params = array(
                'debitWallet' => $firtWalletId,
                'creditWallet' => $seconWalletId,
                'amount' => $amount,
                'message' => $message
            );
            //Send money from wallet1 to wallet2
            $res = self::$lemonwayKit->sendPayment($params);
            if (isset($res->lwError)) {
                $response = self::setErrorResponse($res->lwError->CODE, $res->lwError->MSG);
            } else {
                $response = self::setSuccessResponse($res->operations[0]);
            }
     
            return $response;
     
        }

    Maintenant j'ai un autre fichier du nom de GlobalManager.php et je souhaite réutiliser le code ci-dessous en adaptant les variables, j'ai donc effectué ceci :

    Code PHP : 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
     
    /**
                     * @param Int $walledIdNearfix
                     * @param Int $walletDetail
                     * @param Double $amount
                     * @param String $message
                     *
                     * @return String json
                     */
     
                    function sendPayment($walledIdNearfix, $walletDetail, $amount, $message = '')
                    {
                        $params = array(
                            'debitWallet' => $walledIdNearfix,
                            'creditWallet' => $walletDetail,
                            'amount' => $amount,
                            'message' => $message
                        );
     
                        //Send money from walletIdNearfix to $walletDetail
                        $res = self::$lemonwayKit->sendPayment($params);
                        if (isset($res->lwError)) {
                            $response = self::setErrorResponse($res->lwError->CODE, $res->lwError->MSG);
                        } else {
                            $response = self::setSuccessResponse($res->operations[0]);
                        }
     
                        return $response;
                    }

    Sauf que, setErrorResponse & setSuccessResponse sont en surbrillance et il me dit :
    Method setErrorResponse not found in GlobalManager
    , donc comment puis-je indiquer à mon GlobalManager qu'il doit récupérer les private static function setErrorResponse & setSuccessResponse qui se trouve dans le fichier "LemonWayProcess.php" ? Où dois-je peut-être copier/coller des deux fonctions directement dans mon GlobalManager ?

    J'espère que vous aurez compris sinon dites le moi je réexpliquerais :s

    Cordialement, Skyxia.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    La vraie question est : pourquoi tes méthodes sont-elles privates ? normalement, les visibilités sont utilisées uniquement dans les classes. Est-ce LemonWayProcess est une définition de classe ?

  3. #3
    Membre émérite

    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
    Points : 2 440
    Points
    2 440
    Par défaut
    - Tu ne peux pas utiliser les méthodes privées d'une classe dans une autre classe
    - en utilisant l'opérateur de résolution self, tu indiques à PHP que les méthodes statiques que tu veux appeler appartiennent à la classe GlobalManager, ce qui n'est pas le cas.

    Donc, pour résoudre ton problème, il faut déjà que tu changes les deux méthodes statiques en public; mais si ce n'est pas toi qui a écrit cette classe, vérifie bien d'abord pourquoi elles sont privées, il doit y a voir une raison particulière (le cas le plus fréquent est qu'il s'agit de méthodes internes susceptibles d'être modifiées dans une future version).

    Ensuite, il faut que tu changes en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self::$lemonwayKit::setErrorResponse
    (si, dans ton code, $lemonwayKit est bien une instance de LemonWayProcess.

  4. #4
    Membre confirmé
    Avatar de Skyxia
    Homme Profil pro
    Ingénieur réseau & sécurité
    Inscrit en
    Mai 2016
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur réseau & sécurité
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2016
    Messages : 359
    Points : 627
    Points
    627
    Billets dans le blog
    3
    Par défaut
    Merci bien ! J'ai demandé à la personne ayant écrit la class, apparemment aucun problème pour que je les passe en "public", ta solution fonctionne vu que le reste est correct !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/06/2008, 20h40
  2. Une erreur est reconnue exacte quand celui qui l'a commise s'est trompé ^^^
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/05/2007, 17h51
  3. Ma requete a une erreur est je na la trouve pas
    Par Jamal_71 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/02/2006, 09h11

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