[php] communiquer entre classe et fonctions

Fermé
otip - 24 oct. 2006 à 17:52
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 24 oct. 2006 à 20:33
Bonjour,

Je vais essayer d'etre clair.

Je me remets TRES doucement à php.

J'ai fais une page class.php qui contient une classe dont voiçi le code :
<?php
$slash = '/';
if (strstr(PHP_OS, 'Win')) $slash = '\\';
define('PATH_SLASH', $slash);

//$root = getcwd();
//define('DEFAULT_PATH_ALBUMS',$root.PATH_SLASH.'ALBUMS_PHOTOS'.PATH_SLASH);
define('DEFAULT_PATH_ALBUMS','.'.PATH_SLASH.'ALBUMS_PHOTOS'.PATH_SLASH);

class Album{
	
	public $largeur;
	public $hauteur;
	public $extension;
	public $tabl_dossiers = array();
	public $tabl_thumbs   = array();
	
	
    function est_image($chemin_fichier) {   // PB il faut retourner hauteur et largeur
		$types_ok = array ('image/jpeg', 'image/gif', 'image/png');
		if (list($this->largeur, $this->hauteur, $type) = getimagesize($chemin_fichier)) {
			$type = image_type_to_mime_type($type);
			if (in_array($type, $types_ok)) {
				$ext = explode("/", $type);
				$this->extension = $ext[1];
				return true;
			}
		}
		return false;
	}
}
?>


Bon dans un autre fichier php, je fais appel à la fonction est_image. PUIS plus loin j'ai une fonction qui utilise des valeur censées venir de la fonction de ma classe, voici le code de cette fonction :

function make_thumb($origin_image,$path_thumb) {
	//$album = new Album();	
	// Calcul du ratio entre la grande image et la miniature
	if ($album->largeur <= $album->hauteur) {
		$ratio = $album->hauteur / MAX_LONG;
	} else {
		$ratio = $album->largeur / MAX_LONG;
	}
//...


voici l'erreur obtenu :

Warning: Division by zero in /home/photos/public_html/monscript.php on line 61

Warning: Division by zero in /home/photos/public_html/monscript.php on line 62

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/photos/public_html/monscript.php on line 65

Warning: call_user_func(imagecreatefrom) [function.call-user-func]: First argument is expected to be a valid callback in /home/photos/public_html/monscript.php on line 68

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/photos/public_html/monscript.php on line 71

En gros, si je pige bien, il me dit largeur et hauteur valent 0 ou sont vide.

donc il ne récupère aucune valeur.

Comment dois-je faire.

je précise que je fais bien un :

$album = new Album();

mais dans une autre fonction qui appelle make_thum().

Merci pour votre aide.

otip

1 réponse

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
24 oct. 2006 à 20:33
je précise que je fais bien un :

$album = new Album();

mais dans une autre fonction qui appelle make_thum().


Si tu crées un objet du nom de $album dans une autre fonction que make_thumb(), il faut que tu passes cette variable en paramètre de make_thum() pour l'utiliser dedans.

De plus tu as créé un objet Album, mais est ce que tu as appelé sa methode est_image() avec le chemin vers l'image pour assigner les valeurs de la hauteur et de la largeur, et aussi pour vérifier que c'est une image valide?
Il faut tester la valeur de retour de est_image()

Faire ce test te permettra d'éviter des mauvaises suprises.

Peut -être que $hauteur et $largeur sont égaux à zero, mais s'il y a une erreur de division par zero, c'est plutôt parce que MAX_LONG est égal à zero, est ce que cette constante existe?

Sinon, pour les autres erreurs, il faudrait voir la suite de ton code.
0