Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1714 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  #'!*%@!?#!!** de saloperie de *!!#¡@* de PHP de m*@#*!

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

#'!*%@!?#!!** de saloperie de *!!#¡@* de PHP de m*@#*!

n°1981699
GPT2
Posté le 07-04-2010 à 18:04:35  profilanswer
 

Bonjour  :cry: ,
 
J'arrive pas à me débarrasser de cette cochonnerie de duo notice + erreur:
 

Notice: Trying to get property of non-object in [...] on line 69
 
Fatal error: Call to a member function myFunction() on a non-object in [...] on line 69


 
Voilà ce qu'il y a à la ligne 69:
 

Code :
  1. $myClass->myVar->myFunction();


 
$myClass est une variable comprenant une instance d'une classe comprenant une variable public $myVar, comprenant elle-même une instance d'une classe qui offre la méthode myFunction().
 
Pourquoi ça marche pas ?
 
Merci par avance de votre généreuse aide.

mood
Publicité
Posté le 07-04-2010 à 18:04:35  profilanswer
 

n°1981702
stealth35
Posté le 07-04-2010 à 18:26:20  profilanswer
 

fais un  
 

Code :
  1. var_dump($myClass)

Message cité 1 fois
Message édité par stealth35 le 07-04-2010 à 18:26:32
n°1981714
Alisteroid
Posté le 07-04-2010 à 19:16:48  profilanswer
 

C'est pourtant clair non?

Call to a member function myFunction() on a non-object


 [:petrus75]  
 
Tu veux pas que ça te corrige l'erreur automatiquement aussi ?

n°1981722
GPT2
Posté le 07-04-2010 à 20:13:32  profilanswer
 

stealth35 a écrit :

fais un

 
Code :
  1. var_dump($myClass)



Merci bien, j'ai résolu le problème.

 

un var_dump retournait NULL, du coup le problème était en fait beaucoup plus simple, $myClass était vide au moment où j'essayais de l'utiliser...

 

comment ça se fait ? bien en fait cette ligne était appelée indirectement depuis la partie __construct() de cette même classe, et donc j'imagine que PHP laisse la variable vide tant que l'instanciation n'est pas terminée (cf. l'excution de __construct et de tout ce que __construct appelle). Bref, il a fallu mettre le code qui appelle la ligne 69 dans une deuxième méthode de la classe (constructPart2() - et que j'appelle après avoir créé l'instance, une fois que la variable est correctement assignée...)

 

bref, PHP pourrait s'améliorer sur ce point.

 

merci en tous cas.

 
Alisteroid a écrit :

C'est pourtant clair non?

Call to a member function myFunction() on a non-object


 [:petrus75]

 

Tu veux pas que ça te corrige l'erreur automatiquement aussi ?


Oui, c'est tellement clair que le problème n'avait absolument rien à voir avec le message. [:jblover]

Message cité 1 fois
Message édité par GPT2 le 07-04-2010 à 20:14:10
n°1981817
esox_ch
Posté le 08-04-2010 à 09:23:40  profilanswer
 

Deux choses :
 
- Apprend à écrire un titre explicite. Tu t'imagine ce que donnerai ce forum si tout le monde créait des topics comme le tiens?
- Le commentaire de sebondus était tout à fait justifié. Le problème est totalement lié à ce qu'il a dit. Pas de sa faute si tu étais à côté de la plaque :
 

Citation :


Call to a member function myFunction() on a non-object


 
ça veut dire : Tu essaies d'appeler une fonction (myFunction()) sur un variable n'était pas en objet. Pourquoi ça? Parce que $myClass était vide. De ce fait $myClass->myVar était nul. Donc appeler null->myFunction() est invalide => PHP gueule.
 
Donc conclusion : PHP a beau être un langage de merde, c'est pas sa faute si tu sais pas lire ses messages d'erreur.


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1981890
SuperKebab
Posté le 08-04-2010 à 11:09:07  profilanswer
 

GPT2 a écrit :


Merci bien, j'ai résolu le problème.

 

un var_dump retournait NULL, du coup le problème était en fait beaucoup plus simple, $myClass était vide au moment où j'essayais de l'utiliser...

 
GPT2 a écrit :


Oui, c'est tellement clair que le problème n'avait absolument rien à voir avec le message. [:jblover]


En effet  [:petrus75]

 

Montre ton code, y a forcément une erreur de conception, tu as l'air d'avoir "bidouillé" pour contourner cette erreur .

Message cité 1 fois
Message édité par SuperKebab le 08-04-2010 à 11:10:37
n°1981930
Tirkyth
Posté le 08-04-2010 à 11:59:47  profilanswer
 

SuperKebab a écrit :


En effet  [:petrus75]  
 
Montre ton code, y a forcément une erreur de conception, tu as l'air d'avoir "bidouillé" pour contourner cette erreur .


Code :
  1. if ($myClass !== null)
  2. {
  3.  $myClass->myVar->myFunction();
  4. }


 [:oh shi-]

n°1982066
rufo
Pas me confondre avec Lycos!
Posté le 08-04-2010 à 16:06:23  profilanswer
 

!is_null(), c'est pas mal comme fonction aussi :/ Ou même empty()...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°1982069
Tirkyth
Posté le 08-04-2010 à 16:09:53  profilanswer
 

Pour moi le is_null() ou l'opérateur revient exactement au même.
 
Mais peut-être que tu as un bon argument pour l'utiliser à la place de l'opérateur ?

n°1982073
rufo
Pas me confondre avec Lycos!
Posté le 08-04-2010 à 16:18:37  profilanswer
 

Le risque de se tromper entre != et !== et, éventuellement, la lisibilité...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
mood
Publicité
Posté le 08-04-2010 à 16:18:37  profilanswer
 

n°1982117
Tirkyth
Posté le 08-04-2010 à 17:42:26  profilanswer
 

Pas bête en effet pour le risque de se tromper. Lisibilité je suppose que c'est une affaire de goût, je préfère l'opérateur :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  #'!*%@!?#!!** de saloperie de *!!#¡@* de PHP de m*@#*!

 

Sujets relatifs
Communiquer avec PHPPassage du HTML au PHP : perte du référencement
[LDAP] Changer mot de passe Active Directory via PHP[PHP / SQL] Conception Menu Dynamique a sous Categories Variables
[PHP] foreach qui ignore des valeurs d'un tableauModifier un script java-script en PhP / MySQL
[PHP]lister les bases mysql...PHP, Excel et ODBC
Comparaison entre 2 dates/algorithme PHPMenu /PHP Lien avec MySQL
Plus de sujets relatifs à : #'!*%@!?#!!** de saloperie de *!!#¡@* de PHP de m*@#*!


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR