Aide Php objet

Bonjour,

J’ai une erreur dans mon code mais je n’arrive pas à voir d’où elle pourrait venir. Pourriez vous m’aider ?

image.class.php

<?php
class image{
  protected $blanc;
  protected $noir;
  protected $rouge;
  protected $bleu;
  
  public function __construct($x, $y){
    header("Content-type: image/png");
	$image = imagecreate($x,$y);
    return $image;
  }
  public static function CouleurNoir($image){
    header("Content-type: image/png");
	$this->noir = imagecolorallocate($image, 0, 0, 0);
	return $this->noir;
  }
  public static function CouleurRouge($image){
    header("Content-type: image/png");
    $this->rouge = imagecolorallocate($image,255, 0, 4);
	return $this->rouge;
  }
  public static function CouleurBleu($image){
    header("Content-type: image/png");  
	$this->bleu = imagecolorallocate($image,242, 100, 100);
	return $this->bleu;
  }
}
?>

cartographie

<?php
require_once("image.class.php");
$image= New image(500,500);
//$image = $img->CreateImage(500,500);
$rouge= $img->CouleurRouge($image);
imagepng($image);
?>

MErci d’avance
Edité le 19/05/2011 à 12:36

Salut notil,

Si tu as une erreur, il serait préférable que tu nous le communiques sinon il sera difficile pour nous de pouvoir t’aider correctement… :wink:

Je viens d’analyser ton code.

Dans un premier temps, le header dans chacune de tes fonctions est inutil. Il est nécessaire uniquement au moment où tu veux afficher ton image. Dans ton cas, le plus simple serait de l’intégrer directement dans ton fichier cartographie.

Ensuite, dans la programmation objet, le constructeur sert à initialiser tes attributs ou objets pour qu’ils soient utilisés dans tes méthodes. Or dans ton constructeur tu retournes ton image créé, ce qui est faux car le constructeur ne retourne rien. Dans ton fichier cartographie, tu récupères juste une instance de ton objet image. En bref, dans cartographie, tu manipules un objet null.

Tu trouveras ci-dessous une version allégée de ton code et plus propre :

image.class.php

<?php
class image{
	private $pic;

	public function __construct($x, $y)
	{
		$this->pic = imagecreate($x,$y);
	}
	
	public function setColorImage($r, $g, $b)
	{
		imagecolorallocate($this->pic, $r, $g, $b);
	}
	
	public function showPic()
	{
		header ("Content-type: image/png");
		imagepng($this->pic);
	}
}
?>

index.php

<?php
require_once("image.class.php");

$image = new image(500, 500);
$image->setColorImage(255, 0, 4);
$image->showPic();
?>

J’espère t’avoir aidé.

Oui merci, ça fonctionne.