|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éclairé
![]() |
Bonjour, j'ai une erreur que cela soit avec php5 ou php4.
Pour résumer, j'ai une classe MySQLConnection dans un fichier mysqlconnection.php, une classe TYMApplication dans un fichier application.php, une classe Framework dans un fichier framework.php et mon fichier index.php. Tout les includes sont fait et j'ai ceci dans mon index.php : Code :
Code :
Fatal error: Call to a member function on a non-object in C:\Sites Internet\XXXXXXXXXX\www\index.php on line 14 Le constructeur de la classe TYMApplication crée une instance de MySQLConnection et la range dans son membre $dataconnection. dans la classe TYMApplication je peux travailler avec $dataconnection en sa qualité d'objet, mais pas dans mon index.php. |
||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
Bonjour,
Que retournent les instructions suivantes : Code :
|
||
|
|
00
|
|
|
#3 | ||||
|
Membre éclairé
![]() |
C'est dur de faire de la POO avec un langage pas vraiment fait pour ça.....
En fait $mainframe non plus n'est pas initialisé alors qu'il rentre bien dans le constructeur. vardump me renvoi NULL. application.php : Code :
Code :
|
||||
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 452 ![]() |
Citation:
Sinon se serait pas mal de poster la classe Framework. Et quoique sa n'a rien à voir avec $mainFrame. Mais pour un getter TYMApplication::getInstance ne retourne rien. C'est normal ? tu pourras aussi mettre le ctor en protected, et getinstance en static. En fait, plus je lit avec attention ton code. Plus mes certitudes s'effacent sur ce que tu souhaites faire. $instance dans getInstance, est il censé avoir un scope plus grand que celui de la méthode ? Car là il ne sera strictement jamais ô p* de grd jamais définit. Pour le ctor, __construct sera suffisant. Là c'est la syntaxe php4 que tu utilises, ce qui ne colles pas avec ton __destruct. Tout comme les var. Enfin la je ne sais plus si c'est du php4 ou php5 que tu souhaites faire, donc... Dans mysqlconnection, le membre database devrait plutôt être dblink. Si tu veux être raccord avec les habitudes du langage. Car ce que tu y stockes et un lien vers la db. Pas le nom de la db. Mais ça c'est histoire juste pour faire joli. fin voila en passant, a plus |
|
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() |
j'ai commencé à faire du php5 quand je me suis rendu compte qu'en fait le serveur sur lequel ce code sera exécuté utilise php 4.4.9.
J'ai pourtant vu des applications (Joomla!) tournant sur php4 utiliser les constructeurs __construct(). Et merci de m'avoir fait remarquer que mon getInstance() fonctionnerait mieux si je n'avais pas oublié le return. Je vais corriger ça. Et les mots-clefs static, public, private, etc c'est bien uniquement en php5, non ? Parce que j'ai dû les enlever pour que mon code fonctionne en php4. |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 452 ![]() |
ok. donc surtout pas de protected ou de static.
Sinon tu aura de nouveaux messages d'erreurs et tu nous diras encore que c'est la faute du langage ^^ : ) Sinon sa donnes quoi la classe Framework ? edit ni de __construct ni __destruct en passant. Pour ce qui est de joomla il on dû créer un bout de code magique pour rendre leur code compat php4 et 5, sans pour autant compliquer le déploiement. |
|
|
00
|
|
|
#7 | |
|
Membre éclairé
![]() |
Citation:
Edit: Merci, tout fonctionne. Des regards extérieurs et la petite erreur à la con disparait. Par contre, savez-vous comment faire fonctionner les constructeurs version php5 avec un analyseur php4 comme je le disais avant ? |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com