php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.11.2004, 00:11  
dws
Benutzer
 
Registriert seit: 30.10.2004
Beiträge: 72
dws
Standard

okay, danke, der fehler ist jetzt weg.
aber: darunter ist der gleiche "blödsinn" wieder

Code:
class Thumbnailer { 
Â* Â* var $autocreate = true; 
Â* Â* var $single_mode = false; 
Â* Â* var $image_list = array(); 
Â* Â* var $ersetzen = false; 
Â* Â* var $image_ext = array("jpg"); 
Â* Â* var $image_dir = ""; 
Â* Â* var $thumb_dir = ""; //hier meine ich
Â* Â* var $thumb_w = 300; 
Â* Â* var $thumb_h = 350;
wie mach ich es da
einfach so, dass ich die funktion erweitere?

Code:
 function varset() 
Â* Â* { 
Â* Â* Â* Â* Â*$this->image_dir = $_POST[projectname] . '/original/'
$this->thumb_dir = $_POST[projectname2] . '/original/'

Â* Â* }
oder ist das mehr?
dws ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.11.2004, 03:42  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von dws
okay, danke, der fehler ist jetzt weg.
aber: darunter ist der gleiche "blödsinn" wieder
Bitte lies das Handbuch:
http://www.php.net/manual/de/language.oop.php
und
http://www.php.net/manual/de/language.oop5.php

Und achte dabei unter anderem auf den Begriff Constructor.

In PHP4 ist das die Methode, die den selben Namen wie die Klasse trägt. In PHP5 kommen noch die beiden Methoden __construct() und destruct() hinzu.

Zitat:
wie mach ich es da
einfach so, dass ich die funktion erweitere?
a. Das ist eine Methode, auch wenn sie wie eine Funktion aussieht.
b. ja.

Du könntest die Wertzuweisungen zwar theoretisch mit in den Constructor packen, praktisch gibt es da aber einige Ungereimtheiten, denen man so (wie im Beispiel) aus dem Wege geht.

Achte nur darauf, daß die Methode varset() (der Name ist nebensächlich) vom Constructor aufgerufen wird: $this->varset()

Solltest Du bei der Instantiierung noch spezielle Parameter übergeben wollen, dann machst Du das so:
Code:
class beispiel
{
  var $test = false; # sowas ist immer gut, weil man es testen kann
  
  function beispiel ($var = '') # Constructor; var wird mit einer leeren Zeichenkette vorbelegt;
  {
     $this->varset($var);
  }

  function varset ($var='')
  {
     $this->test = $var;
  }

  function run ()
  {
     printf ('<h4>Test=%s</h4>', $this->test);
  }
}

$test_ist_leer = & new beispiel ();
$test = &new beispiel ('Hier steht was drin');
$test->run();
$test_ist_leer->run();
Ungetestet: eventuelle Syntax-Tippfehler sind also nicht ausgeschlossen.
 
Alt 02.11.2004, 20:35  
dws
Benutzer
 
Registriert seit: 30.10.2004
Beiträge: 72
dws
Standard

Leider funktionierts noch immer nicht, original schon
Ich poste mal das ganze script.
bitte einmal noch helfen danke

Code:
<html>
<head>
</head>
<body>
<?php
class Thumbnailer {

    var $autocreate = true;
    var $single_mode = false;
    var $image_list = array();
    var $ersetzen = false;
    var $image_ext = array("jpg");
    var $image_dir = "";
    var $thumb_dir = "";
    var $thumb_w = 300;
    var $thumb_h = 350;

    function varset()
     { 
          $this->image_dir = $_POST[projectname] . '/original/' 
 $this->thumb_dir = $_POST[projectname2];  //andere Bilder sollen in den projektzugehörigen ordner kommen
 
     } 


    ######### Methoden der Klasse/des Objekts
    ##### gibt alle Bilder mit den korrekten Endungen in einem Array zurück
    function list_all_images() {
        $files = array();
        $dir_handle = opendir($this->image_dir);
        while ($file = readdir($dir_handle)) {
            if ($file != "." && $file != ".." && !is_dir($this->image_dir.$file)) {
                $tmp_file = explode(".",$file);
                $i = 0;
                while ($i < count($this->image_ext)) {
                    if ($this->image_ext[$i] == strtolower($tmp_file[count($tmp_file)-1])) {
                        $files[] = $file;
                    }
                $i++;
                }
            }
        }
        closedir($dir_handle);
        return $files;
    }

    ##### Erstellt ein Thumbnail
    function create_thumb($filename) {
        $file = $this->image_dir.$filename;
        if ($this->ersetzen || !file_exists($this->thumb_dir.$filename)) {
            #### Bild- Datei und -Endung
            $tmp_file = explode(".",$file);
            $ext = strtolower($tmp_file[count($tmp_file)-1]);
            #### Bild aus Datei erstellen; Bildtypen müssen unterschieden werden
            if ($ext == "jpg" || $ext == "jpeg") {
                $img = imagecreatefromjpeg($file);
            } elseif ($ext == "gif") {
                $img = imagecreatefromgif($file);
            } elseif ($ext == "png") {
                $img = imagecreatefrompng($file);
            } elseif ($ext == "wbmp") {
                $img = imagecreatefromwbmp($file);
            } else {
                return false;
            }
            #### Größen ablesen
            $old_w = imagesx($img);
            $old_h = imagesy($img);
            #### neue Größen bestimmen
            if ($old_w > $old_h) {
                $thumb_w = $this->thumb_w;
                $thumb_h = $old_h*($this->thumb_w/$old_w);
            }
            if ($old_w < $old_h) {
                $thumb_w = $old_w*($this->thumb_h/$old_h);
                $thumb_h = $this->thumb_h;
            }
            if ($old_w == $old_h) {
                $thumb_w = $this->thumb_w;
                $thumb_h = $this->thumb_h;
            }
            #### Bild erzeugen in korrekter Größe
            $new_img = @imagecreatetruecolor($thumb_w,$thumb_h);
            if (!$new_img) {
                $new_img = imagecreate($thumb_w,$thumb_h);
                imagecopyresized($new_img,$img,0,0,0,0,$thumb_w,$thumb_h,$old_w,$old_h);
            } else {
                imagecopyresampled($new_img,$img,0,0,0,0,$thumb_w,$thumb_h,$old_w,$old_h);
            }
            #### Bild speichern; Bildtypen müssen unterschieden werden
            if ($ext == "jpg" || $ext == "jpeg") {
                imagejpeg($new_img,$this->thumb_dir.$filename);
            } elseif ($ext == "gif") {
                imagegif($new_img,$this->thumb_dir.$filename);
            } elseif ($ext == "png") {
                imagepng($new_img,$this->thumb_dir.$filename);
            } elseif ($ext == "wbmp") {
                imagewbmp($new_img,$this->thumb_dir.$filename);
            } else {
                return false;
            }
            #### Cache leeren
            imagedestroy($new_img);
            imagedestroy($img);
            return true;
        } else {
            return false;
        }
    }
    
    ##### Lässt Thumbnails anhand der Bilder im Ordner erzeugen
    function create_thumbs() {
    	if ($this->single_mode) {
    		$files = $this->image_list;
    	} else {
        	$files = $this->list_all_images();
        }
        $i = 0;
        while ($i < count($files)) {
            $this->create_thumb($files[$i]);
            $i++;
        }
        return true;
    }

    ##### Konstruktor für die Klasse (wird nur ausgeführt, wenn die Klasse sofort starten soll)
    function Thumbnailer() {
        if ($this->autocreate) {
            $this->create_thumbs();
        }
    }

}


?>

$objekt = New Thumbnailer;
echo "Alles ok!";
?>
</body>
</html>
dws ist offline  
Alt 02.11.2004, 20:45  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von dws
Leider funktionierts noch immer nicht, original schon
1. Was funktioniert nicht?
2. varset() wird nicht aufgerufen. weder manuel noch im constructor
3. Warum nutzt Du für die Ermittlung des Bildtypes nicht getimagesize() (gilt auch für die Extensions)?
Zitat:
Code:
$objekt = New Thumbnailer;
echo "Alles ok!";
Diese Aussage ist eine kühne und ungeprüfte Behauptung.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Parse error: syntax error, unexpected T_BOOLEAN_AND Saschilys PHP Tipps 2008 7 22.05.2008 16:14
Spionageversuch? Code-Injection? saibot PHP-Fortgeschrittene 24 06.10.2007 02:07
Parse error: parse error, unexpected ';' in... cycap PHP Tipps 2006 2 27.01.2006 20:09
Fehlermeldung: Parse error: parse error, expecting `','' HTML, Usability und Barrierefreiheit 1 13.09.2005 15:22
xmlrpc-epi kompilieren [gelöst] freq.9 Server, Hosting und Workstations 4 24.07.2005 21:45
Parse error: parse error, unexpected $... GrU3nL!nG PHP Tipps 2005-2 4 11.06.2005 18:10
Parse error: parse error, unexpected T_VARIABLE schmiddy PHP Tipps 2005 7 02.06.2005 13:35
Finde den Parse Error net bzw. kann ihn net beheben PHP Tipps 2005 9 17.04.2005 01:45
[Erledigt] noch ein parse error... PHP Tipps 2005 3 30.01.2005 14:39
Parse error: parse error, unexpected '{' PHP Tipps 2005 10 23.01.2005 16:59
verblüffend: Parse error: parse error, unexpected T_STRING, PHP Tipps 2004 1 07.10.2004 09:05
Parse error: parse error, unexpected $ smoere PHP Tipps 2004 2 27.09.2004 20:18
Parse error: parse error in /srv/www/htdocs/web27/html/kunde PHP Tipps 2004 3 19.09.2004 18:14
Parse error: parse error, unexpected $ Hilfe!!! PHP Tipps 2004 8 29.06.2004 21:51
Warum ist hier ein parse error? b++ PHP Tipps 2004 4 20.06.2004 16:24

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
unexpected t_string bei instantiierung neuer klasse

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:06 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.