Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: classi in php

  1. #1

    classi in php

    ciao a tutti,
    ho voluto provare a cimentarmi nella scrittura di una classe (prima classe della mia vita in php) per l'elaborazione di immagini e in dreamweaver tutto ok, nessun warning sulla sintassi invece quando faccio partire la pagina sul server mi da questo errore:
    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /membri/ultimateshadow/inc/img.class.php on line 12

    Codice PHP:
    class immagine{
        private 
    $path NULL;               // questa è la riga 12, la prima della classe
        
    public $original_width=NULL;
        public 
    $original_height=NULL;
            if(
    $path==NULL)
                die(
    "Errore nel codice sorgente.");
            
    $this->path $path;
            list(
    $this->original_width,$this->original_height)=getimagesize($this->path);
        }
        [...]

    qualcuno potrebbe aiutarmi a capire dove sbaglio?
    grazie

  2. #2
    Utente di HTML.it L'avatar di DjBart
    Registrato dal
    Jan 2009
    Messaggi
    346
    Puoi postare tutto il codice ??
    da quello che hai postato ora c'è una } in più

  3. #3
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    immagino che questo

    Codice PHP:
     if($path==NULL
                die(
    "Errore nel codice sorgente."); 
            
    $this->path $path
            list(
    $this->original_width,$this->original_height)=getimagesize($this->path); 
    debba stare nel costruttore e non così a caso nella classe.
    Ovvero
    Codice PHP:
    class immagine
        private 
    $path NULL;               // questa è la riga 12, la prima della classe 
        
    public $original_width=NULL
        public 
    $original_height=NULL

        function 
    __construct($path){ 
            if(
    $path==NULL
                die(
    "Errore nel codice sorgente."); 
            
    $this->path $path
            list(
    $this->original_width,$this->original_height)=getimagesize($this->path); 
        } 
        [...] 


  4. #4
    Originariamente inviato da bstefano79
    immagino che questo

    Codice PHP:
     if($path==NULL
                die(
    "Errore nel codice sorgente."); 
            
    $this->path $path
            list(
    $this->original_width,$this->original_height)=getimagesize($this->path); 
    debba stare nel costruttore e non così a caso nella classe.
    Ovvero
    Codice PHP:
    class immagine
        private 
    $path NULL;               // questa è la riga 12, la prima della classe 
        
    public $original_width=NULL
        public 
    $original_height=NULL

        function 
    __construct($path){ 
            if(
    $path==NULL
                die(
    "Errore nel codice sorgente."); 
            
    $this->path $path
            list(
    $this->original_width,$this->original_height)=getimagesize($this->path); 
        } 
        [...] 

    no scusate ho fatto copia-incolla in due riprese e ho saltato la riga public function __contructor($path){ motivo per cui c'è quella famosa graffa in più però è proprio in questa forma che non funzionava. in più per quanto io no faccia grande affidamento sul validatore di dreamweaver se co fossero delle parentesi in meno o di troppo mi avviserebbe invece la sintassi è tutta ok...

    vi posto la classe intera (non fossilizzatevi su eventuali molteplici errori nell'implementazione delle funzioni, l'ho buttata giù alla veloce contando di testarla e correggere xD)

    Codice PHP:
    <?
    /*
    CLASS INFO

    ERROR CODES:
        001        Arguments not passed or passed null.
        002        Access to resources denied.
        003        File index out of boubnds. Maximum index 9999 exceded.
    */

    class immagine{

        private 
    $path NULL;  //qui mi da errore, ho pensato a un errore
    //nella dichiarazione della classe ma cercando su internet e documentazione php
    //sono dichiarate tutte in questo modo...
        
    public $original_width=NULL;
        public 
    $original_height=NULL;

        public function 
    __construct($path){
            if(
    $path==NULL)
                die(
    "Errore nel codice sorgente.");
            
    $this->path $path;
            list(
    $this->original_width,$this->original_height)=getimagesize($this->path);
        }


        public function 
    fitTo($width,$height){
            if(
    $height==NULL&&$width==NULL)
                return 
    "001";
            if(
    $height==NULL){
                list(
    $w$h)=$this->fitSizeW($width);
            }else if(
    $width==NULL){
                list(
    $w$h)=$this->fitSizeH($height);
            }else{
                list(
    $w$h)=$this->fitSize($width,$height);
            }
            if(
    $resized=imagecreatetruecolor($w,$h)){
                
    $tmp=imagecreatefromjpeg($this->path);
                
    imagecopyresampled($resized,$tmp,0,0,0,0,$w,$h,$this->original_width,$this->original_height);
                unset(
    $tmp);
            }else{
                return 
    "002";
            }
            return 
    $resized;
        }

        public function 
    saveIncremental($image,$path){
            if(
    file_exists($path)){
                
    $dot_pos=strrpos($path,".");
                
    $slash_pos=strrpos($path,"/");
                
    $index_offset=$dot_pos-$slash_pos;
                
    $file_name=substr($path,0,$dot_pos);
                
    $ext=substr($path,$dot_pos+1,strlen($path));
                if(
    $index_offset>4){
                    if(
    is_numeric($tmp=substr($file_name,strlen($file_name)-4,strlen($file_name)))){
                        
    $tmp++;
                        if(
    $tmp>9999)
                            return 
    "003";
                        
    $file_name=substr($file_name,0,strlen($file_name)-4);
                        for(
    $i=0;$i<4-strlen($tmp);$i++){
                            
    $file_name.="0";
                        }
                        
    $file_name.=$tmp;
                        unset(
    $tmp);
                    }else{
                        
    $file_name.="0000";
                    }
                }
                
    $path=$file_name.".".$ext;
            }
            
    imagejpeg($image,$path);
        }


        private function 
    fitSize($width$height){
            if(
    $this->original_width>$width){
                
    $height=($this->original_height*$width)/$this->original_width;
            }
            if(
    $this->original_height>$height){
                
    $width=($this->original_width*$height)/$this->original_height;
            }
            return array(
    $width,$height);
        }

        private function 
    fitSizeH($height){
            if(
    $this->original_height>$height){
                
    $width=($this->original_width*$height)/$this->original_height;
            }
            return array(
    $width,$height);
        }

        private function 
    fitSizeW($width){
            if(
    $this->original_width>$width){
                
    $height=($this->original_height*$width)/$this->original_width;
            }
            return array(
    $width,$height);
        }
    }
    ?>
    secondo me c'è qualcosa che non ho capito sulle classi..

  5. #5
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    ho provato questo codice e funziona, l'unica cosa che ti posso dire è di mettere <?php al posto del semplice <?

  6. #6
    non mi stupisce che ti funzioni... mi stupisce che non funzioni a me

    scusa se rompo ma mi potresti dire come l'hai usato?
    a me da errore sia se apro direttamente il .php sia se faccio un require_once..

  7. #7
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    l'errore che riporti è di sintassi quindi è impossibile che funzioni a me e non funzioni a te.... sicuro di non aver modificato qualcosa???

  8. #8
    sicuro al 100% è da ieri che non la tocco più questa classe!

    dici che centra qualcosa il fatto che il sito sia hostato su altervista?
    ho controllato e GD è abilitato e non mi sembra di usare altre librerie che possano bloccarmi lo script e comunque on in quella linea...

  9. #9
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    allora penso di aver capito, sei sicuro di aver scelto la versione php 5 su altervista? Perchè se hai php 4 ti da errore visto che non era OOP

  10. #10

    mi vergogno profondamente.... pensavo che le class ci fossero anche in php4

    beh colgo l'occasione per capire un po di cose sul php5

    rimane la programmazione funzionale o si è passati completamente e oop? perchè io detesto l'oop xD

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.