Là aussi tu a un problème : $this->src et $this->title n'existent pas...
Peut-être que ça fonctionnerais mieux comme ça (pas testé, mais bon):
class ImageDisplayer { var $images; var $title; var $src;
//------------------------------------------------- function ImageDisplayer() { // attention, pour la suite du code, // tu veux un tableau de tableaux, pas un // tableau associatif... $this->images = array(array("blabla","bla.jpg"), array("fluflu","flu.jpg"), array("riri","ri.jpg") );
// choix par defaut, sinon tu // aura un probleme si tu appelle displayImage() // avant selectImage()... this->selectImage(0); }
//------------------------------------------------- function selectImage($num){ // verifier qu'on ne deborde pas... if ($num >= 0 && $num < count($this->images) { $this->title = this->images[$num][0]; $this->src = $this->image[$num][1]; } else { // TODO : erreur } }
//------------------------------------------------- function displayImage(){ echo "n<img src="images/{$this->src}" width="300" height="224" title="{$this->title}" />n";
} }
Quelques conseils (pas spécifiques à PHP d'ailleurs): - soit cohérent dans la langue utilisée. Ne mélange pas français et anglais. - donne des noms explicites. Ta classe ne modélise pas une photo. - base de préférence les noms des fonctions et méthodes sur des verbes d'action.
Autre chose, concernant la conception de ta classe : pourquoi le choix et l'affichage sont-ils séparés ? Ceci t'oblige a appeler deux méthodes l'une à la suite de l'autre :
id = new ImageDisplayer(); id->selectImage(1); id->displayImage();
Ne serait-il pas plus simple d'avoir tout dans une seule méthode ?
Là aussi tu a un problème : $this->src et $this->title n'existent pas...
Peut-être que ça fonctionnerais mieux comme ça (pas testé, mais bon):
class ImageDisplayer {
var $images;
var $title;
var $src;
//-------------------------------------------------
function ImageDisplayer() {
// attention, pour la suite du code,
// tu veux un tableau de tableaux, pas un
// tableau associatif...
$this->images = array(array("blabla","bla.jpg"),
array("fluflu","flu.jpg"),
array("riri","ri.jpg")
);
// choix par defaut, sinon tu
// aura un probleme si tu appelle displayImage()
// avant selectImage()...
this->selectImage(0);
}
//-------------------------------------------------
function selectImage($num){
// verifier qu'on ne deborde pas...
if ($num >= 0 && $num < count($this->images) {
$this->title = this->images[$num][0];
$this->src = $this->image[$num][1];
}
else {
// TODO : erreur
}
}
//-------------------------------------------------
function displayImage(){
echo "n<img src="images/{$this->src}" width="300"
height="224" title="{$this->title}" />n";
}
}
Quelques conseils (pas spécifiques à PHP d'ailleurs):
- soit cohérent dans la langue utilisée. Ne mélange pas français et anglais.
- donne des noms explicites. Ta classe ne modélise pas une photo.
- base de préférence les noms des fonctions et méthodes sur des verbes
d'action.
Autre chose, concernant la conception de ta classe : pourquoi le choix
et l'affichage sont-ils séparés ? Ceci t'oblige a appeler deux méthodes
l'une à la suite de l'autre :
id = new ImageDisplayer();
id->selectImage(1);
id->displayImage();
Ne serait-il pas plus simple d'avoir tout dans une seule méthode ?
Là aussi tu a un problème : $this->src et $this->title n'existent pas...
Peut-être que ça fonctionnerais mieux comme ça (pas testé, mais bon):
class ImageDisplayer { var $images; var $title; var $src;
//------------------------------------------------- function ImageDisplayer() { // attention, pour la suite du code, // tu veux un tableau de tableaux, pas un // tableau associatif... $this->images = array(array("blabla","bla.jpg"), array("fluflu","flu.jpg"), array("riri","ri.jpg") );
// choix par defaut, sinon tu // aura un probleme si tu appelle displayImage() // avant selectImage()... this->selectImage(0); }
//------------------------------------------------- function selectImage($num){ // verifier qu'on ne deborde pas... if ($num >= 0 && $num < count($this->images) { $this->title = this->images[$num][0]; $this->src = $this->image[$num][1]; } else { // TODO : erreur } }
//------------------------------------------------- function displayImage(){ echo "n<img src="images/{$this->src}" width="300" height="224" title="{$this->title}" />n";
} }
Quelques conseils (pas spécifiques à PHP d'ailleurs): - soit cohérent dans la langue utilisée. Ne mélange pas français et anglais. - donne des noms explicites. Ta classe ne modélise pas une photo. - base de préférence les noms des fonctions et méthodes sur des verbes d'action.
Autre chose, concernant la conception de ta classe : pourquoi le choix et l'affichage sont-ils séparés ? Ceci t'oblige a appeler deux méthodes l'une à la suite de l'autre :
id = new ImageDisplayer(); id->selectImage(1); id->displayImage();
Ne serait-il pas plus simple d'avoir tout dans une seule méthode ?
et tu n'a plus besoin d'appeler selectImage() avant displayImage() (ce qui est une Bonne Chose(TM)).
Voili voila... Il ne te reste plus qu'à éviter de coder en dur la liste d'images et les dimensions pour l'affichage.
HTH Bruno
Marc
class ImageDisplayer { var $images; var $title; var $src; ...
Quelques conseils (pas spécifiques à PHP d'ailleurs): - soit cohérent dans la langue utilisée. Ne mélange pas français et anglais. - donne des noms explicites. Ta classe ne modélise pas une photo. - base de préférence les noms des fonctions et méthodes sur des verbes d'action.
dans le meme genre, une classe avec un verbe c'est plus vraiment une bonne classe. je suis pleinement d'accord avec toi sur ce que tu enonce.
il est possible de realiser des classes multiples avec des nom proches mais qui joue des roles de gestionnaire ou de contenu.
Sinon, bravo pour ce petit topo, c'est un regal.
Pour exemple je me suis amusé a developper un ensemble de classes pour les fonctions imap. Voici les classes que j'ai créé :
ImapManager : - spécifique a mon appli. - gestion de l'application, des mots de passes - le main en quelque sorte.
ImapServer : gere la connexion, - contient mot de passe - et lien vers Mailbox
ImapMailbox : - c'est une boite aux lettre - a prioris un attribut de ImapServer
ImapMessage - destiné a l'api sur les messages
ImapMessageObject - les messages ont une structure un peu complexe - ils sont donc decoupés en objets
ImapCore: - racine de toutes ces classes
ImapDecode: - operations de transcodage
ImapUtils: - operations inclassables.
l'objetif est de lire une boite aux lettres via imap et de filtrer des virus. Le tout sera placé sous une crontab et sous linux ; c'est en bonne voie.
pour conclure ce decoupage en classe structure grandement l'API un peu complexe et purement horizontal du protocole IMAP. Ca n'apporte rien sur le plan de la programmation et de la technique pure. C'est aussi un exercice de style interessant.
Je crois qu'on manque de problemes pratiques pour realiser des modilisation objet, les simples cas d'ecoles sont souvent les memes et n'apportent pas grand chose. Je me souviens avoir realisé un monopoly en Java, et c'etait tres satisfaisant.
Il y a le newsgroup fr.comp.objet ou de temps a autre des themes intéressants sont lancés.
class ImageDisplayer {
var $images;
var $title;
var $src;
...
Quelques conseils (pas spécifiques à PHP d'ailleurs):
- soit cohérent dans la langue utilisée. Ne mélange pas français et
anglais.
- donne des noms explicites. Ta classe ne modélise pas une photo.
- base de préférence les noms des fonctions et méthodes sur des verbes
d'action.
dans le meme genre, une classe avec un verbe c'est plus vraiment une
bonne classe. je suis pleinement d'accord avec toi sur ce que tu enonce.
il est possible de realiser des classes multiples avec des nom proches
mais qui joue des roles de gestionnaire ou de contenu.
Sinon, bravo pour ce petit topo, c'est un regal.
Pour exemple je me suis amusé a developper un ensemble de classes
pour les fonctions imap. Voici les classes que j'ai créé :
ImapManager :
- spécifique a mon appli.
- gestion de l'application, des mots de passes
- le main en quelque sorte.
ImapServer : gere la connexion,
- contient mot de passe
- et lien vers Mailbox
ImapMailbox :
- c'est une boite aux lettre
- a prioris un attribut de ImapServer
ImapMessage
- destiné a l'api sur les messages
ImapMessageObject
- les messages ont une structure un peu complexe
- ils sont donc decoupés en objets
ImapCore:
- racine de toutes ces classes
ImapDecode:
- operations de transcodage
ImapUtils:
- operations inclassables.
l'objetif est de lire une boite aux lettres via imap
et de filtrer des virus. Le tout sera placé sous une
crontab et sous linux ; c'est en bonne voie.
pour conclure ce decoupage en classe structure grandement l'API
un peu complexe et purement horizontal du protocole IMAP. Ca n'apporte
rien sur le plan de la programmation et de la technique pure.
C'est aussi un exercice de style interessant.
Je crois qu'on manque de problemes pratiques pour realiser
des modilisation objet, les simples cas d'ecoles sont souvent
les memes et n'apportent pas grand chose. Je me souviens
avoir realisé un monopoly en Java, et c'etait tres satisfaisant.
Il y a le newsgroup fr.comp.objet ou de temps a autre des themes
intéressants sont lancés.
class ImageDisplayer { var $images; var $title; var $src; ...
Quelques conseils (pas spécifiques à PHP d'ailleurs): - soit cohérent dans la langue utilisée. Ne mélange pas français et anglais. - donne des noms explicites. Ta classe ne modélise pas une photo. - base de préférence les noms des fonctions et méthodes sur des verbes d'action.
dans le meme genre, une classe avec un verbe c'est plus vraiment une bonne classe. je suis pleinement d'accord avec toi sur ce que tu enonce.
il est possible de realiser des classes multiples avec des nom proches mais qui joue des roles de gestionnaire ou de contenu.
Sinon, bravo pour ce petit topo, c'est un regal.
Pour exemple je me suis amusé a developper un ensemble de classes pour les fonctions imap. Voici les classes que j'ai créé :
ImapManager : - spécifique a mon appli. - gestion de l'application, des mots de passes - le main en quelque sorte.
ImapServer : gere la connexion, - contient mot de passe - et lien vers Mailbox
ImapMailbox : - c'est une boite aux lettre - a prioris un attribut de ImapServer
ImapMessage - destiné a l'api sur les messages
ImapMessageObject - les messages ont une structure un peu complexe - ils sont donc decoupés en objets
ImapCore: - racine de toutes ces classes
ImapDecode: - operations de transcodage
ImapUtils: - operations inclassables.
l'objetif est de lire une boite aux lettres via imap et de filtrer des virus. Le tout sera placé sous une crontab et sous linux ; c'est en bonne voie.
pour conclure ce decoupage en classe structure grandement l'API un peu complexe et purement horizontal du protocole IMAP. Ca n'apporte rien sur le plan de la programmation et de la technique pure. C'est aussi un exercice de style interessant.
Je crois qu'on manque de problemes pratiques pour realiser des modilisation objet, les simples cas d'ecoles sont souvent les memes et n'apportent pas grand chose. Je me souviens avoir realisé un monopoly en Java, et c'etait tres satisfaisant.
Il y a le newsgroup fr.comp.objet ou de temps a autre des themes intéressants sont lancés.