Rechercher : dans
Par :

[php] communiquer entre classe et fonctions

Dernière réponse le 24 oct 2006 à 20:33:51 otip, le 24 oct 2006 à 17:52:29 
 Signaler ce message aux modérateurs

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
Configuration: php5, debian etch

Meilleures réponses pour « [php] communiquer entre classe et fonctions » dans :
PHP - Les classes Voir La notion de classe Php3 intègre un soupçon de caractéristiques empruntées aux langages orientés objet, c'est-à-dire la possibilité d'utiliser des objets, entités regroupant des données et des fonctions au sein d'une structure et rendant la...
PHP - Mail et fonctions réseau Voir PHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est...
PHP - Affichage de texte sur le navigateur VoirLe but de PHP est de permettre la création de pages web dynamiques, ainsi son but premier est de pouvoir envoyer des données au navigateur. Les trois fonctions standards PHP fournit 3 fonctions permettant d'envoyer du texte au navigateur. Ces...
Installation de EasyPHP VoirIntroduction à EasyPHP Afin de faire fonctionner PHP, il est nécessaire à la base d'en télécharger les sources depuis un site spécialisé (par exemple PHP.net), puis de compiler celui-ci (ainsi que d'éditer les liens) afin de créer un fichier...
Langage C++ - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...

1

 kilian, le 24 oct 2006 à 20:33:51

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.

..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...

Répondre à kilian
Collection CommentÇaMarche.net