Attempt to assign property of non-object - PHP - Programmation
Marsh Posté le 31-12-2010 à 10:27:23
Il faudrait que test soit déclaré avec la visibilité public, ou bien il faudrait copier test dans une variable publique et retourner la variable publique.
Je reconnais que ce n'est pas expliqué dans la documentation officielle http://fr2.php.net/manual/en/langu [...] bility.php
Mais c'est clairement dit dans un commentaire de cette page :
Citation : WHEN do I use public, protected or private keyword? Here's the default behavior. |
Marsh Posté le 31-12-2010 à 10:58:28
olivthill a écrit : Il faudrait que test soit déclaré avec la visibilité public, ou bien il faudrait copier test dans une variable publique et retourner la variable publique. |
Non
Marsh Posté le 31-12-2010 à 11:03:26
Tu as fini de raconter n'imp ?
Son code est parfaitement valable.
Il n'a AUCUNE raison de foutre sa variable $test en public ... il pourrait même la foutre en private que ça devrait très bien marcher.
Et relis le message que tu quotes, parce que ça ne dit pas ça du tout
Marsh Posté le 31-12-2010 à 11:10:43
Bordel, il accède à $test via une méthode publique. Il a juste fait un accesseur... Il ne DOIT pas foutre sa variable en public
Marsh Posté le 31-12-2010 à 12:35:45
Tout à fait
Si il y a un accesseur (getTest), la propriété doit être private ou protected et DONC il n'y a aucune raison de faire $maVar->test. C'est LE truc de base de la programmation objet donc olivthill arrête l'alcool, c'est mauvais pour ta mémoire et ton anglais.
Concernant le problème de départ : ça n'a pas de sens de faire un $test="init" pour faire ensuite $this->test="updated" dans le constructeur (init sert à rien)
Je vois pas pourquoi ça planterait mais comme ça n'a aucun sens, j'avoue que j'ai fait jamais ça (et j'ai rien pour tester)
Marsh Posté le 31-12-2010 à 13:32:40
et voila ce qu'il arrive quand on fait un truc tout simple pour expliquer un problème
Marsh Posté le 02-01-2011 à 10:49:33
ca devrait marcher tu es sur que tu n'as pas une erreur de syntaxe dans ton code, car des accesseurs comme ca j'en ai des kilometres et ca marche sans soucis puisque c'esrt fait pour ....
a noter que si il y a un accesseur la propriété ne doit pas necessairement etre private ou protected , mais mettre un accesseur sur une prop publique n'a efectivement pas bcp de sens ....
Marsh Posté le 02-01-2011 à 15:35:29
bizarre il me sort bien "updated" chez moi (php 5.3.4 osx), y'a rien de choquant dans le code..., essaye avec un autre code similaire dans un autre fichier
Marsh Posté le 02-01-2011 à 15:38:08
En fait t'es juste un boulet qui ne veut même pas réfléchir 5 secondes et se remettre en question quoi
Marsh Posté le 02-01-2011 à 17:31:47
Dj YeLL a écrit : |
t enerve pas le mec il a pas les bases de maternelles en poo.
Marsh Posté le 02-01-2011 à 19:09:12
Cette erreur précisément rend instable Apache ?
Alors que ça semble une erreur "banale" niveau PHP ?
Par rendre instable Apache que veux tu dire ? Il crash ?
Je comprends pas non plus le passage ou tu dis que si tu relances Apache ça marche.
Est-ce que tu veux dire qu'au bout d'un moment Apache te donne l'erreur mais qu'un redémarrage résout le soucis ?
Si c'est le cas tu n'aurais pas un problème de corruption de mémoire ? Une barrette défectueuse ?
Marsh Posté le 02-01-2011 à 20:38:21
oxman a écrit : Cette erreur précisément rend instable Apache ? |
j'ai une appli Flex-PHP qui tourne avec amfphp.
Y a du Mysql et du mssql aussi.
A un moment donné (et c'est la le problème, je ne sais pas pourquoi) plus rien ne marche comme ça devrait.
Je me retrouve avec ce genre d'erreur ubuesque. Quand ça arrive en prod, plus aucun site ne marche évidement, on doit relancer apache
Et rien dans les logs évidement
J'ai la même chose en dev donc c'est bien software.
Ça fait 6 mois que je cherche.
Marsh Posté le 02-01-2011 à 20:40:33
c'est au niveau de l'amfphp que t'as l'erreur, ou juste en lancant le code seul ?
Marsh Posté le 02-01-2011 à 21:00:55
L'appli en question tourne 24/7 et y a un moment où ça pète
Et après, j'ai ce genre d'erreur.
Marsh Posté le 02-01-2011 à 21:04:00
En dev c'est donc un serveur différent alors ? Vu que tu dis que c'est bien software.
Je suppose que le bout de code que tu as donné ne suffit pas à lui seul à faire planter un moment ?
Donne nous un bout de code qui suffit à faire planter à un moment que l'on test sur nos machines.
Marsh Posté le 02-01-2011 à 21:06:14
haaaaaaa je dois mal m'exprimer
Le bout de code que j'ai mis, c'est une conséquence. La cause, je ne la connais pas, et c'est bien ça le problème.
Y a un moment où apache devient instable et je me retrouve avec des erreurs avec un code parfaitement valide.
Marsh Posté le 02-01-2011 à 21:29:08
Et vu que tu ne peux pas donner toute ton application, tu es condamné à te débrouiller tout seul
Marsh Posté le 03-01-2011 à 07:26:36
Regarde le nombre de process apache et la RAM utilisée en fonction du temps... p-e que tu as un memory leak..
Marsh Posté le 03-01-2011 à 11:14:19
Code :
|
C'est pas ça.
Je continue à chercher
Marsh Posté le 03-01-2011 à 11:26:52
Tu as mis tous les logs en mode verbose?
Marsh Posté le 03-01-2011 à 11:36:14
pour les modules, c'est standard.
Il n'y a que mssql qui est moins courant.
Je pencherais pour un problème the threads apache.
L'appli faisant des appels toutes les 3 secondes.
Je vais devoir aller voir les barbus
Marsh Posté le 03-01-2011 à 12:06:09
Fait la tourner en CGI avec PHP FPM tu sera fixé
Marsh Posté le 03-01-2011 à 14:36:51
hum: http://forum.hardware.fr/hfr/Progr [...] 0351_1.htm
en faisant une recherche Google
Je repasse à Zend_Amf et j'vous dit quoi
Marsh Posté le 04-01-2011 à 15:15:49
Bon, je pense avoir isolé le problème.
Ce code fait planter apache:
Code :
|
Si on tente d'exécuter le petit bout de code en exemple, ça ne marche plus
Marsh Posté le 04-01-2011 à 15:18:16
ReplyMarsh Posté le 04-01-2011 à 15:18:21
Ta vrai classe Visitor défini / initialise explicitement tous ces attributs où tu te la joues "PHP-style" en faisant ça à la volée ?
Marsh Posté le 04-01-2011 à 15:22:33
stealth35 a écrit : j'ai un de mon coté |
et maintenant si tu fais ça:
Code :
|
Il se passe quoi ?
perso j'ai "Error at offset 2643 of 11972 bytes" donc le forum clean peut-être la chaine...
Marsh Posté le 04-01-2011 à 15:24:55
C'est étrange d'avoir "//" au milieu d'un chemin
Citation : ... /var/netmining/php/modules/core/5.5-3//mod_interaction/comp_popin/js/class.popin.js .... |
Marsh Posté le 04-01-2011 à 15:48:17
ReplyMarsh Posté le 04-01-2011 à 15:58:20
Chez moi j'ai pas d'erreur, juste unserialize qui me retourne false... (PHP 5.3.4 CLI)
Marsh Posté le 04-01-2011 à 15:58:55
ouai 5.3.4 sur un win 7 la, j'ai testé sous osx chez moi et c'était bon aussi, t'as essaye de creer un nouveau fichier le mettre ton code dedans (copier du forum)
Marsh Posté le 04-01-2011 à 16:04:26
Moi aussi j'ai un "updated" sur un php 5.2.4 sur ubuntu
C'est normal donc (et rassurant quelque part )
corten, ta config est foirée, t'as un pb de mémoire ou de disque
Marsh Posté le 04-01-2011 à 16:06:15
@ stealth35 : T'avais fait quoi pour obtenir ton erreur "offset" que tu as écrite plus haut?
Marsh Posté le 04-01-2011 à 16:06:34
stealth35 a écrit : |
Si je copie le code du forum dans un nouveau fichier (encodé en utf8), ça pête
Marsh Posté le 04-01-2011 à 16:09:46
et les gars en CLI vous trichez
C'est avec apache que ça crash
Marsh Posté le 30-12-2010 à 17:45:38
Bonjour,
je suis en face d'un problème très étrange.
Je parviens à faire en sorte que Apache devienne instable.
Je ne connais pas encore la cause ( après 6 mois de recherche ) mais j'ai la conséquence.
Si je fais ceci:
La, il me sort un magnifique Warning:
Attempt to assign property of non-object à la ligne:
$this->test = 'updated';
A noter aussi que echo $h->getTest(); me sort 'init'
Si je lance ce script en CLI, ça marche normalement.
Je dois relancer apache pour que ça marche dans un navigateur
Quelqu'un a déja eu un cas comme ça ?
Edit: versions
PHP 5.3.1 Windows
même soucis avec PHP 5.3.2 Linux
Message édité par Profil supprimé le 30-12-2010 à 17:52:36