JeuWeb - Crée ton jeu par navigateur

Version complète : Essai de POO, est-ce correct ?
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2
tes attributs ( public $nom;public $xp;public $pvWink devraient être privés et disposer d'accesseurs.
De plus, chaque classe (à part pour les classes privées) doit être définie dans un fichier propre nommé par son nom (donc dans Personnage.class.php5).

Je suis contre l'utilisation des die dans le cas d'une mauvaise requete; utilise plutot une redirection propre avec un avertissement.

Code PHP :
<?php 
$nom
= $this->nom;
$xp = $this->xp;
$pv = $this->pv;

echo
'
Nom : '
,$nom,'<br />
Experience : '
,$xp,'<br />
Points de vie : '
,$pv,'<br />
'
;
Quel est l'interêt d'utiliser d'autres variables ? fais plutot :
Code PHP :
<?php 
echo '
Nom : '
,$this->nom,'<br />
Experience : '
,$this->xp,'<br />
Points de vie : '
,$this->pv,'<br />
'
;


Quand tu actualises ta bdd, n'oublie pas d'actualiser aussi les attributs de tes classes; car même si celle-ci disparait à la fin de la page, des effets de bords peuvent survenir (ex : une deuxième attaque survient ou un test de riposte sur un mort)
Code PHP :
<?php 
$this
->pv = $this->pv + $soinsRecus; et "UPDATE ... SET pv = $this->pv"


Et dernière chose, utilise une classe bdd pour tes requetes/connection. Avec une simple fonction die tu ne remontes que d'un cran, or en objet, tu auras souvent une petite dizaine de couches à remonter.
(ex : $personnage->arme->getDegats(); si une erreur survient dans une fonction UPDATE de getDegats, tu ne connaitras pas les paramètres entrés dans personnage et arme qui ont provoqués l'erreur).
gtsoul a écrit :tes attributs ( public $nom;public $xp;public $pvWink devraient être privés et disposer d'accesseurs.
Pourrais tu développer un peu s'il te plaît ? J'avoue ne pas comprendre ce dont tu parles. Confused

gtsoul a écrit :Je suis contre l'utilisation des die dans le cas d'une mauvaise requete; utilise plutot une redirection propre avec un avertissement.
Ok, mais quel genre de redirection, et si c'est par header comment afficher l'avertissement (puisque c'est instantané) ?

gtsoul a écrit :Et dernière chose, utilise une classe bdd pour tes requetes/connection. Avec une simple fonction die tu ne remontes que d'un cran, or en objet, tu auras souvent une petite dizaine de couches à remonter.
(ex : $personnage->arme->getDegats(); si une erreur survient dans une fonction UPDATE de getDegats, tu ne connaitras pas les paramètres entrés dans personnage et arme qui ont provoqués l'erreur).
Là par contre j'ai rien compris Confused. Je débute tout juste mes essais en POO, et je n'ai aucune idée des bonnes pratiques, des choses à faire/ne pas faire. Pourrais-tu m'éclairer la dessus ?


En tout cas merci beaucoup pour ta réponse qui me donne des pistes qui me feront peut-être progresser.

Sephi-Chan
tu devrais te mettre aussi au mvc... ca va de paire! car la tu ne vas pas au fond de la philosophie objet / separer code/html
Pourquoi pas tiens, tu aurais des pistes qui expliquent un peu le concept ?

Pour le moment j'ai pu trouver quelques articles sur http://tahe.developpez.com/web/php/mvc/ notamment, mais s'il y à d'autres articles, dans le genre CCC (Clair, concis, concret), je suis preneur Wink.


Sephi-Chan
en gros pour faire simple:
tu fais une classe d'accesseur (model) qui te permet d'acceder a ta bdd (toto.db.class.php)
tu fais une classe de fonctions applicatives qui derive de ta classe d'accesseur et qui y accede (controlleur)
tu fais ton schema final qui se sert de ta classe controlleur.
pour privatiser tes attributs :
Code PHP :
<?php 
class Personnage {

private
$nom;

public function
getNom() // un getter : permet d'obtenir une valeur
{ return $this->nom;}
public function
setNom($valeur) // un setter : permet de modifier un attribut
{ $this->nom = $valeur; }
Voilà ca à l'air de servir à rien ; mais réduire la visibilité de tes variables améliore la lecture de ton code. Avec un IDE comme eclipse, tu peux à tout moment utiliser l'autocomplétion, sauf que si tout est public tu vas vite te retrouver avec des centaines de choix dispos ; eclipse gère la génération de getter/setter si tu n'as pas envie de le taper.
En outre, cela te permet de réaliser un traitement sur tes valeurs, ex : tu peux vérifier si elle est non-nulle, réaliser une requete si ce n'est pas le cas, effectuer un filtre, etc ...

Pour le message d'erreur, tu crées une fonction refresh($url , $message) avec ob_end_clean() et header($url);
tu peux essayer de passer le $message dans une variable de $_SESSION (que tu réinitialiseras au début de chaque page)ou par get ; personnellement si un message est important je le stocke dans ma bdd au même titre que les logs; sinon je l'affiche à la volée et je fournis un lien de retour.


Sur le dernier point, tu peux utiliser les classes de connexion que j'ai présenté dans un tuto.
tu peux aussi forcer les setter et les getter par defaut avec __set et __get ^^
les surcharger tu veux dire ?
ca marche comment ?
tout est expliqué la :

http://www.manuelphp.com/php/language.oo...embers.php


l'utilisation est normale par la suite.
Pages : 1 2