fehler mit klasse

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • fehler mit klasse

    Also ich habe mir gedacht ich schreibe mir eine Thumbnail-klasse

    PHP-Code:
    <?php
    class Thumbnail{
      private 
    $width;         //Breite des Thumbnails
      
    private $heigth;        //Höhe des Thumbnails
      
    private $file;          //Originaldatei
      
    private $fileName;      //Name der Originaldatei
      
    private $filePath;      //Pfad zur Originaldatei
      
    private $fileWidth;     //Breite der Originaldatei
      
    private $fileHeigth;    //Höhe der Originaldatei
      
    private $fileFormat;    //Format der Originaldatei
      
    private $thumbnail;     //erzeugtes thumnail
      
    private $thumbPath;     //Pfad zu den erzeugten Thumbnails

      
    private $errors = array(); // Fehlerarray für kritische Fehler
      
      
    public function __construct() {
          
    setWidth(0);
          
    setHeigth(0);
          
    setFilePath('');
          
    setThumbPath('');
          
    setFileName('unknown');
      } 
      
      public function 
    setWidth($newWidth$keepSolution=false){
          if(!
    is_int($newWidth))
              return 
    false;
          if(
    $keepSolution){
              
    $faktor $newWidth/$width;
              
    setFileWidth(intval($heigth*$faktor));
          }
          
    $width $newWidth;
      }
      public function 
    getWidth(){
          return 
    $width;
      }
      
      public function 
    setHeigth($newHeigth$keepSolution=false){
          if(!
    is_int($newHeigth))
              return 
    false;
          if(
    $keepSolution){
              
    $faktor $newHeigth/$heigth;
              
    setFileWidth(intval($width*$faktor));
          }
          
    $heigth $newHeigth;
      }
      public function 
    getHeigth(){
          return 
    $heigth;
      }
      
      public function 
    setFilePath($newFilePath){
          if(!
    is_dir($newFilePath)){
            return 
    false;
          }
          
    $filePath $newFilePath;
      }
      public function 
    getFilePath(){
          return 
    $filePath;
      }

      public function 
    setThumbPath($newThumbPath){
          if(!
    is_dir($thumbPath)){
            return 
    false;
          }
          
    $thumbPath $newThumbPath;
      }
      public function 
    getThumbPath(){
          return 
    $thumbPath;
      }
      
      public function 
    setFileName($newFileName){
          
    $fileName $newFileName;
      }
      public function 
    getFileName(){
          return 
    $fileName;
      }
      
      public function 
    getFileHeigth(){
          return 
    $fileHeigth;
      }
      public function 
    getFileWidth(){
          return 
    $fileWidth;
      }
      
      public function 
    getErrors(){
          return 
    $errors;
      }
      
      private function 
    load(){
          if (!
    file_exists ($filePath.$fileName)) {
            
    $errors[] = "Datei nicht vorhanden.";
            return 
    false
          }
          
    $data GetImageSize($filePath.$fileName); //Datentyp ermitteln
          
    $fileWidth $data[0];
          
    $fileHeigth $data[1];
          
    $fileFormat $data[2];
          switch (
    $fileFormat) { 
              case 
    1//GIF
                  
    $file ImageCreateFromGIF ($filePath.$fileName);
              break;
              
              case 
    2//JPG
                  
    $file ImageCreateFromJPEG($filePath.$fileName);
              break; 
              
              case 
    3//PNG
                  
    $file ImageCreateFromPNG($filePath.$fileName);
              break; 
              
              default:
                  
    $errors[] = "Kein gültiger Datentyp.";
                  return 
    false;
              break;
          }
      }
      
      public function 
    create(){
          if(
    count($errors) or (!$width && !$height)){
              return 
    false;
          }
          
    setWidth(getFileWidth());
          
    setHeigth(getFiletHeigth());
          
    $thumbnail ImageCreateTrueColor($width$height); 
          
    ImageCopyResampled $thumbnail$file
                               
    0000
                               
    $width$height$fileWidth$fileHeigth); 
          
    header('Content-Type: image/png');
          
    imagepng($thumbnail);
          
    imagedestroy($thumb);
      }
    }

    $thumb = new Thumbnail();
    $thumb->setFilePath('Party%20bilder/mein%2019er/gs2.3/images');
    $thumb->setFileFilename('DSC00231.gif');
    $thumb->setWidth(200);
    $thumb->load();
    $thumb->create();

    ?>
    Nun habe ich alles ersma runtergeschrieben weil es grad spass gemacht hat.
    Und wollte jetzt nach und nach die fehler ausmerzen.
    Beim aufrufen kommt jedoch folgender fehler

    Fatal error: Call to undefined function setWidth() in /usr/export/www/vhosts/funnetwork/hosting/florianweinhold/temp/thumbnail.class.php on line 17
    und ich weiss nicht warum der mir sagt dass es die Funktion nicht gibt.

    Name stimmt
    Parameteranzahl stimmt (2. Parameter ist ja Optional)

    könnt ihr mir sagen warum der mir diese fehlernachricht gibt?

    die Klasse ist übrigens noch nicht fertig

  • #2
    Öhm ... schaut so aus, als wenn das mit den Klassen bzw. Referenzierung innerhalb der Klassen noch nicht so richtig verinnerlicht wurde. Schau Dir doch noch mal die Basics an und achte explizit auf $this.
    MM Newmedia | MeinBlog

    Kommentar


    • #3
      ok hab den fehler weg
      ich war auch zu blös

      PHP-Code:
      <?php
      class Thumbnail{
        private 
      $width;         //Breite des Thumbnails
        
      private $heigth;        //Höhe des Thumbnails
        
      private $file;          //Originaldatei
        
      private $fileName;      //Name der Originaldatei
        
      private $filePath;      //Pfad zur Originaldatei
        
      private $fileWidth;     //Breite der Originaldatei
        
      private $fileHeigth;    //Höhe der Originaldatei
        
      private $fileFormat;    //Format der Originaldatei
        
      private $thumbnail;     //erzeugtes thumnail
        
      private $thumbPath;     //Pfad zu den erzeugten Thumbnails

        
      private $errors = array(); // Fehlerarray für kritische Fehler
        
        
      public function __construct() {
            
      $this->setWidth(0);
            
      $this->setHeigth(0);
            
      $this->setFilePath('');
            
      $this->setThumbPath('');
            
      $this->setFileName('unknown');
        } 
        
        public function 
      setWidth($width$keepSolution=false){
            if(!
      is_int($newWidth))
                return 
      false;
            if(
      $keepSolution){
                
      $faktor $width/$this->$width;
                
      $this->setFileWidth(intval($heigth*$faktor));
            }
            
      $this->$width $width;
        }
        public function 
      getWidth(){
            return 
      $width;
        }
        
        public function 
      setHeigth($heigth$keepSolution=false){
            if(!
      is_int($newHeigth))
                return 
      false;
            if(
      $keepSolution){
                
      $faktor $heigth/$this->$heigth;
                
      setFileWidth(intval($width*$faktor));
            }
            
      $this->$heigth $heigth;
        }
        public function 
      getHeigth(){
            return 
      $heigth;
        }
        
        public function 
      setFilePath($filePath){
            if(!
      is_dir($filePath)){
              return 
      false;
            }
            
      $this->$filePath $filePath;
        }
        public function 
      getFilePath(){
            return 
      $filePath;
        }

        public function 
      setThumbPath($thumbPath){
            if(!
      is_dir($thumbPath)){
              return 
      false;
            }
            
      $this->$thumbPath $thumbPath;
        }
        public function 
      getThumbPath(){
            return 
      $thumbPath;
        }
        
        public function 
      setFileName($fileName){
            
      $this->$fileName $fileName;
        }
        public function 
      getFileName(){
            return 
      $fileName;
        }
        
        public function 
      getFileHeigth(){
            return 
      $fileHeigth;
        }
        public function 
      getFileWidth(){
            return 
      $fileWidth;
        }
        
        public function 
      getErrors(){
            return 
      $errors;
        }
        
        private function 
      load(){
            if (!
      file_exists ($filePath.$fileName)) {
              
      $errors[] = "Datei nicht vorhanden.";
              return 
      false
            }
            
      $data GetImageSize($filePath.$fileName); //Datentyp ermitteln
            
      $fileWidth $data[0];
            
      $fileHeigth $data[1];
            
      $fileFormat $data[2];
            switch (
      $fileFormat) { 
                case 
      1//GIF
                    
      $file ImageCreateFromGIF ($filePath.$fileName);
                break;
                
                case 
      2//JPG
                    
      $file ImageCreateFromJPEG($filePath.$fileName);
                break; 
                
                case 
      3//PNG
                    
      $file ImageCreateFromPNG($filePath.$fileName);
                break; 
                
                default:
                    
      $errors[] = "Kein gültiger Datentyp.";
                    return 
      false;
                break;
            }
        }
        
        public function 
      create(){
            
      $this->load;
            if(
      count($errors) or (!$width && !$height)){
                return 
      false;
            }
            
      $this->setWidth(getFileWidth());
            
      $this->setHeigth(getFiletHeigth());
            
      $thumbnail ImageCreateTrueColor($width$height); 
            
      ImageCopyResampled $thumbnail$file
                                 
      0000
                                 
      $width$height$fileWidth$fileHeigth); 
            
      header('Content-Type: image/png');
            
      imagepng($thumbnail);
            
      imagedestroy($thumb);
        }
      }

      $thumb = new Thumbnail();
      $thumb->setFilePath('Party%20bilder/mein%2019er/gs2.3/images');
      $thumb->setFileName('DSC00231.gif');
      print_r($thumb->getErrors());
      $thumb->setWidth(200);
      $thumb->create();



      ?>
      Zuletzt geändert von florian1x; 16.08.2009, 21:36.

      Kommentar


      • #4
        PHP-Code:
        public function __construct() {
          
        $this -> setWidth(0);
          ...

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Der Konstruktor ist überflüssig, weil alle Vorbesetzungen schon bei der Eigenschaftsdeklaration vorgenommen werden können.
          Wir werden alle sterben

          Kommentar


          • #6
            Ja ist mir auch irgendwie aufgefallen ^^.
            Hab die Klasse auch nochmal neugeschrieben
            und etwas vereinfacht dargestellt.

            Funktioniert jetzt auch richtig
            nachdem ich mich nochmal mit klassen ausseinander gesetzt habe

            Die Klasse darf frei verwendet und bearbeitet werden.

            bin natürlich für verbesserungsvorschläge offen
            werde die Klasse aber auch nochma in einem andern thread posten.

            passt dann nur nicht ins Developer forum

            PHP-Code:
            <?php
            /*####################################################################
             class: Thumbnail
             Description: Class to handle thumbnails on an easy way.
             Author: Florian Weinhold
             latest update: 17th. August 2009
             Version: 1.0.0
             notice: comments in german
            #####################################################################*/

            class Thumbnail{
              private 
            $error// Variable zum Speichern wichtiger Fehler
              
            private $thumb// Bildkopie
              
              //Konstanten 
              
            const GIF 1
              const 
            JPG 2;
              const 
            PNG 3;
              
              
            //Konstruktor
              
            public function __construct($imageUrl) {
                  
            $this->error='';
                  
            $this->thumb $this->load($imageUrl);
              } 
              
              
            //Get-Methoden
              /*
              Gibt den letzten bekannten Fehler zurück
              */
              
            public function getError(){
                  if(
            $this->error=='')
                      return 
            $this->error;
                  return 
            false;
              }
               
              
            //sonstige Methoden
              
              /*
              Funktion zum Laden der originalen Bilddatei
              param $imageUrl: url zum Original
              return: gibt den Bezeichner auf das Original zurück
              notice: wenn das Original nicht existiert wird false zurück gegeben
              */
              
            public function load($imageUrl){
                  if (!
            file_exists ($imageUrl)) {
                    
                    return 
            false
                  }
                  
            //Datentyp ermitteln
                  //und Bild erzeugen
                  //anschließend zurück geben
                  
            $data GetImageSize($imageUrl); 
                  switch (
            $data[2]) { 
                      case 
            1//GIF
                          
            return ImageCreateFromGIF ($imageUrl);
                      break;
                      
                      case 
            2//JPG
                          
            return ImageCreateFromJPEG($imageUrl);
                      break; 
                      
                      case 
            3//PNG
                          
            return ImageCreateFromPNG($imageUrl);
                      break; 
                      
                      default:
                          
            $this->error "Load Error: invalide data type.";
                          return 
            false;
                      break;
                  }
              }
              
              
            /*
              Ändert die Dimensionen des Bildes
              param $x: Breite
              param $y (optional): Höhe
              notice: Wenn die Höhe nicht mit angegeben wird, passt sie sich automatisch
                      mit an.
                      Wenn x und y nicht gesetzt sind wird false zurück gegeben.
              */
              
            public function resize($x$y=false){
                  if(!
            $x && !$y){
                      return 
            false;
                      
            $this->errors[] = "invalide data type.";
                  }
                  
            //Aktuelle Größe zwischenspeichern
                  
            $oldX=ImageSX($this->thumb);
                  
            $oldY=ImageSY($this->thumb);
                  
            //Wenn die Höhe nicht mit angegeben wurde 
                  //wird die Höhe proportional zu Breite skaliert.
                  
            if(!$y)
                      
            $y=$oldY*$x/$oldX;
                  
            $tmp ImageCreateTrueColor($x$y); 
                  
            ImageCopyResampled $tmp$this->thumb
                                       
            0000
                                       
            $x$y
                                       
            $oldX$oldY); 
                  
            $this->thumb $tmp
              }
              
            /*
              Stellt das Bild dar.
              param type (optional): Ausgabetyp
              notice: gibt false zurück, wenn kein passender Typ angegeben wird.
              */
              
            public function run($type=Thumbnail::JPG){
                   switch (
            $type) { 
                      case 
            1//GIF
                          
            header('Content-type: image/gif');
                          
            imagegif($this->thumb);

                      break;
                      
                      case 
            2//JPG
                          
            header ("Content-type: image/jpg");
                          
            imagejpeg($this->thumb);
                      break; 
                      
                      case 
            3//PNG
                          
            header ("Content-type: image/png");
                          
            imagepng($this->thumb);
                      break; 
                      
                      default:
                          
            $this->error "Run Error: invalide data type.";
                          return 
            false;
                      break;
                      
                  }
                  
            imagedestroy($this->thumb);
              }
              
            /*
              Speichert das Bild ab.
              param $filename: Dateiname unter dem die Datei gespeichert wird
              param $type(optional): Ausgabetyp
              */
              
            public function save($filename$type=Thumbnail::JPG$path='./'){
                  if(!
            is_dir($path)){
                    
            $this->error "Save Error: directory doesn't exist.";
                    return 
            false;
                  }
                  switch (
            $type) { 
                      case 
            1//GIF
                          
            imagegif($this->thumb$path.$filename);

                      break;
                      
                      case 
            2//JPG
                          
            imagejpeg($this->thumb$path.$filename);
                      break; 
                      
                      case 
            3//PNG
                          
            imagepng($this->thumb$path.$filename);
                      break; 
                      
                      default:
                          
            $this->error "Save Error: invalide data type.";
                          return 
            false;
                      break;
                      
            imagedestroy($this->thumb);
                  }
              }
            }

            /*#################################################
            #               Examples                          #
            #################################################*/
            $t = new Thumbnail('DSC00232.JPG'); //load Image

            //$t->resize(400); //Resize Image

            //$t->run(); //Run as JPG
            //$t->run(Thumbnail::GIF); or $t->run(1); //Run as GIF
            //$t->run(Thumbnail::JPG); or $t->run(2); //Run as JPG
            //$t->run(Thumbnail::PNG); or $t->run(3); //Run as PNG

            //$t->save('filename'); //save as jpg in current dir
            //$t->save('filename', Thumbnail::PNG); //save as png in current dir
            //$t->save('filename', Thumbnail::GIF, 'path'); //save as png in path
            ?>

            Kommentar

            Lädt...
            X