reload d'une page PHP

Petit nouveau ! | 6 Messages

23 déc. 2011, 21:46

Bonsoir

J'ai crée une application qui nécessite l'utilisation de comptes personnels.
Des que l'utilisateur s'est loggé sur son compte, j'instancie toutes les classes, et affiche toutes les informations relatives à son compte.
Ces informations sont fournies par des getter, des basiques MonObjet->GetInfos.

Or, l'utilisateur peut etre amené a faire des manips sur son compte, et à mettre à jour certaines infos.
Jusqu'a présent j'utilise, apres avoir mis a jour la BDD qui contient toutes les infos, une header qui recharge la page principale.

Est-ce que le fait de recharger la page de cette maniere est "correcte". Est-ce que ca provoque l'instanciation de toutes les class, comme lorsque l'utilisateur se logge sur son compte ?

Quel conseile donneriez-vous pour que je puisse mettre a jour proprement des infos à l'ecran, sachant que je code en PHP5 :p

ViPHP
xTG
ViPHP | 7331 Messages

23 déc. 2011, 21:49

Si tu recharges la page, tu réenvois une requête au serveur qui réexécute le script.
Donc oui tu réinstancies toutes les class.

Si tu veux modifier des informations sans avoir à tout recharger il faut voir du côté de l'Ajax.
C'est avant tout pour ne pas recharger la page côté client, mais tu peux aussi l'utiliser pour accéder à des scripts chargeant le strict minimum pour effectuer la modification en base de données et renvoyer les informations à jour vers la page client.

Petit nouveau ! | 6 Messages

23 déc. 2011, 21:53

hmmm, ok

Le mieux est donc d'oublier le reload , et le header, et de travailler exclusivement avec Ajax (et donc JQuery) ?

ViPHP
xTG
ViPHP | 7331 Messages

23 déc. 2011, 22:38

Avant de passer vers ce type de changements je m'assurerai que la ralentissement provient bien de l'instanciation de toutes ces classes. ;)
Et surtout voir si tout est utile.

Sinon tu peux aussi serialiser des objets en session s'ils ne sont pas amené à être modifié.
Ainsi tu gagnes du temps en récupération de données puisque tu n'auras qu'à desérialiser l'objet sans faire un seul accès bdd.

Petit nouveau ! | 6 Messages

23 déc. 2011, 22:47

ok
non, ca ne pompe pas trop de ressources

c'est jsute que je cherche a acquerir les bonnes pratiques, et eviter de faire du code crado

Au pire, la seule classe qui se ferait reinstancier a chaque fois, c 'est celle qui gere la connexion a la BDD....?

ViPHP
xTG
ViPHP | 7331 Messages

23 déc. 2011, 22:56

Préfères instancier à chaque chargement dans ce cas.
C'est propre et clair, et il sera toujours temps d'y repenser si un jour l'application devient trop lente.
Car commencer à monter des usines à gaz (j'entends par là en complexité) n'est pas forcement tiptop. ^^

Eléphant du PHP | 67 Messages

16 janv. 2012, 11:35

Salut,

Personnellement je préférerai travailler dans ton cas avec du XML, au chargement de la page tu génère un XML toXML, que tu manipule avec une trame JS puis ... ce qui te permettrai d'avoir des GetInfos en Ajax... à chaque modification tu mets à jour ton XML et lorsque tu le souhaite tu fais des saveToDB... En mon sens c'est bien plus propre, rien ne t’empêche par la suite d'avoir un XML bcp plus compliqué, et ça résoudra la problématique car si l'utilisateur fait une modification il l'a fait dans le XML que ton getter renverra (donc forcément juste...) lorsqu'il clique sur enregistrer tu sauvegarde le XML en BDD et c'est terminé tu as donc 3 fonctions a coder : MonObjet->toXML(pour générer la couche XML); MonObjet->saveToDB (pour sauver l'objet en BDD); MonObjet->fromXML (pour récupérer le XML modifié)

++