Salut à tous,
J'essaie d'améliorer mes classes et je me pose une question sur ce que j'ai fait.
J'avais à la base une classe Image_Image me permettant de créer une image (quelle surprise :p ). Dans cette classe se trouvais également des fonctions de traitement d'image.
J'ai donc décider de sortir ces méthode de traitement de la classe de création.
Je me retrouve donc maintenant avec :
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class Image_Image { protected $source //Ressource d'image public function __construct(){ //... } }
J'utilise donc désormais mes classes de la manière suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 class Image_Traitement { private $objet; public function __construct(img){ if(!is_object($img)){ throw new Util_ExceptionHandler('Objet attendu'); } $this->objet = $img; } public function niveauDeGris(){ imagefilter($this->objet->source,IMG_FILTER_GRAYSCALE); } }
Le problème étant que je suis obliger de passer $source de protected à public ce qui ne me convient que moyennement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $image = new Image_Image(320,240) // Diverse opération de création d'image //... $traitement = new Image_Traitement($image) $traitement->niveauDeGris(); $image->display()
Hériter "Traitement" de "Image" peut il être la solution sachant que "Traitement" peut recevoir également des objet des classes fille de "Image" (Reflexion,Degrader...) ?
Peut être y'à il une manière plus propre de procéder ?
Est il possible de savoir à quelle classe appartient un objet ? J'aimerais filtrer les objet accepté par Traitement, histoire qu'il n'accepte pas un objet voiture par exemple.
Partager