Onestamente non ho letto tutto ma cmq a quanto pare ho centrato.
La variabile $side della funzione GetHeight deve essere usata da SaveProportionateImage.
Per poter fargiela utilizzare, quindi, la devo rendere globale utilizzando $this->
Onestamente non ho letto tutto ma cmq a quanto pare ho centrato.
La variabile $side della funzione GetHeight deve essere usata da SaveProportionateImage.
Per poter fargiela utilizzare, quindi, la devo rendere globale utilizzando $this->
Per me la devi creare globale (fuori da tutte le funzioni) e poi richiamarla all'interno delle funzioni con global...
Ma scusa, se io fino ad ora l'ho passata attraverso la funzione SaveProportionateImage ed ha sempre funzionato perchè ora dovrei definirla all'esterno e renderla globale?
Semplicemente bisogna fare in modo che passata a SaveProportionateImage sia utilizzabile anche da GetHeight. Detto questo: sai come si fa?
ho paura che sei costretto a renderla globale...leggi su!
ma per globale che intendi?
per caso
var $side;
globale = è definita per tutto lo script
leggi quanto postato sopra!!!
Ma le classi le conosci?
Con le classi global non si usa nel mio caso!!!
Global viene usato per definire una variabile che sta all'esterno della funzione!
Se avessi avuto solo la funzione e la variabile $side all'esterno di essa allora andava bene ma io la variabile side ce l'ho nella classe! Questo significa che le variabili di una funzione all'interno di una classe sono utilizzabili da tutte le altre funzioni.
Per richiamarle si usa $this->.
Quello che tu hai postato è un testo che spiega come utilizzare in una funzione variabili esterne alla funzione medesima! A me non serve! Stai postando cose che sono completamente OT!
Ma io devo aiutare o devo essere aiutato?
Inoltre, a questo punto, visto che qua uno dei due non ha capito e quello che deve essere aiutato sono io e io non ci sto capendo niente sarebbe opportuno che tu postassi direttamente la soluzione invece di postare testo che non fanno altro che confondere chi già non sta capendo niente perchè poco pratico dell'argomento (delle classi intendo e non di PHP!).
Calma non facciamo confusione: global viene usato per richiamare una variabile definita globalmente all'interno di una funzione, al di là della classe...[supersaibal]Originariamente inviato da mircov
Ma le classi le conosci?
Con le classi global non si usa nel mio caso!!!
Global viene usato per definire una variabile che sta all'esterno della funzione!
Se avessi avuto solo la funzione e la variabile $side all'esterno di essa allora andava bene ma io la variabile side ce l'ho nella classe! Questo significa che le variabili di una funzione all'interno di una classe sono utilizzabili da tutte le altre funzioni.
Per richiamarle si usa $this->.
Quello che tu hai postato è un testo che spiega come utilizzare in una funzione variabili esterne alla funzione medesima! A me non serve! Stai postando cose che sono completamente OT!
[/supersaibal]
global non viene usato per definire una variabile che sta all'esterno della funzione, la richiama soltanto... ti ho consigliato di usarlo così puoi richiamare la variabile in qualsiasi parte dello script...
Qualsiasi variazione ad una variabile interna ad una funzione, non modifica il valore di un'eventuale variabile globale con lo stesso nome. Se vogliamo modificare il valore della variabile globale dobbiamo usare il riferimento alla variabile con la lettera &.
Ecco qua! Finalmente! Ci sono riuscito. Mi sono messo un po' e ho risolto senza utilizzare global nè niente di quello che hai postato.
Questa è la funzione corretta.
Ora riesce a ridfimensionare il lato più lungo.
Un consiglio: prima di postare una risposta ad un quesito ripassa questi due passaggi:codice:class Image { var $src_filename; var $src_witdh; var $src_height; var $src_type; var $src_attr; var $src_image; var $side; function Image($filename) { $this->src_filename = $filename; $this->GetImageInfo(); } function GetImageInfo() { list($this->src_width,$this->src_height, $this->src_type, $this->src_attr) = getimagesize($this->src_filename); } function CreateSourceImage() { switch ($this->src_type) { case 1: $this->src_image =imagecreatefromgif($this->src_filename); break; case 2: $this->src_image =imagecreatefromjpeg($this->src_filename); break; case 3: $this->src_image =imagecreatefrompng($this->src_filename); break; default: return false; } return true; } function GetHeight ($height , $width, $side) { if ($height > $width) { $this->side = $side; } elseif ($height == $width) { $this->side = $side; } elseif ($height < $width) { $this->side = ($height*$side)/$width; } } function SaveProportionateImage($filename, $quality, $height) { $this->GetHeight($this->src_height , $this->src_width , $height); $ratio = $this->src_height / $this->side; $dest_image = imagecreatetruecolor( $this->src_width / $ratio,$this->side); imagecopyresampled($dest_image, $this->src_image, 0, 0, 0, 0,$this->src_width / $ratio,$this->src_height / $ratio,$this->src_width,$this->src_height); imagejpeg($dest_image, $filename, $quality); imagedestroy($dest_image); } function Free() { imagedestroy($this->src_image); } }
1) Capisci il problema
2) Vedi se lo conosci
Solo allora potrai postare. Se anche a un solo passaggio dai una risposta negativa non postare proprio! E' meglio per te e per chi tenta di trovare una soluzione o vuole un chiarimento. Ciao.![]()
![]()
![]()
![]()
"Se anche a un solo passaggio dai una risposta negativa non postare proprio!"[supersaibal]Originariamente inviato da mircov
Un consiglio: prima di postare una risposta ad un quesito ripassa questi due passaggi:
1) Capisci il problema
2) Vedi se lo conosci
Solo allora potrai postare. Se anche a un solo passaggio dai una risposta negativa non postare proprio! E' meglio per te e per chi tenta di trovare una soluzione o vuole un chiarimento. Ciao.![]()
![]()
![]()
[/supersaibal]
Questa proprio non l'ho capita... per il resto: ubbidisco!![]()