Salut à tous,
Je développe un projet en POO qui consiste à simplifier la gestion des images en php.
L’idée, c’est d’associer une image à un objet de la classe Image.
Ainsi, il serait très facile de réaliser du traitement d’images.
Par exemple, pour redimensionner et assombrir une image, le code serait :
<?php
include 'tools/Image.php';
$image = new Image('image.png');
$image->redimensionner(250, 200);
$image->assombrir(0.6);
// Afficher l'image au navigateur et libérer la mémoire
$image->afficher();
$image->supprimer();
Le problème, c’est que la classe Image ne fonctionne pas et retourne des erreurs :
<?php
class Image
{
// Attributs
private $_im;
private $_format;
private $_largeur;
private $_hauteur;
public function __construct($path)
{
if (preg_match('#\.jpg$#i', $path) === 1)
{
$_im = imagecreatefromjpeg($path);
$_format = 'JPEG';
}
else if (preg_match('#\.png$#i', $path) === 1)
{
$_im = imagecreatefrompng($path);
$_format = 'PNG';
}
else
{
throw new Exception('Extension du fichier « '.$path.' » non reconnue.');
}
$_largeur = imagesx($_im);
$_hauteur = imagesy($_im);
}
public function afficher()
{
if ($_format === 'PNG')
{
header('Content-type: image/png');
imagepng($_im);
}
else if ($_format === 'JPEG')
{
header('Content-type: image/jpeg');
imagejpeg($_im);
}
}
public function supprimer()
{
imagedestroy($_im);
}
}
// --- Code principal ---
$image = new Image('image.png');
$image->afficher();
$image->supprimer();
Concrètement :
- Pourquoi le programme indique que la variable $_format est indéfinie à la ligne 34 ?
- Comment pourrait-on mieux concevoir ce programme en évitant un seul
if
par type d’image (lignes 13 à 22) ? - Comment transformer les notices et les avertissements en erreurs fatales afin de bloquer le programme si une opération échoue ?
Désolé pour la longueur du message, un bien grand merci à ceux qui répondront (même partiellement) !
+0
-0