php.de

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

 
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 1,00 durchschnittlich.
Alt 28.03.2006, 19:02  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard tutorial bez�glich klassen f�r dummies?

hi leute. ich hab jetzt schon so einige tutorials bez�glich klassen durch, aber versteh das ganze noch immer nicht. steige da sehr schnell aus.

kennt jemand vielleicht ein ganz ganz ganz einfaches und banales tutorial bez�glich des themas klassen? sollte so einfach wie m�glich sein. vielleicht kapiere ich es dann. (

hier mal einige aus denen ich leider nicht schlau wurde:
http://www.usegroup.de/software/phpt...e.html#klassen
http://tut.php-q.net/klassen.html#u4
http://ffm.junetz.de/members/reeg/DS...00000000000000

oder bin ich einfach zu doof wenn ichs aus den oben geposteten urls nicht kapiere?
__________________
mfg Alexander Haim
Promaetheus ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.03.2006, 19:09  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Die Links sind schon recht banal, man kann es eigentlich nur noch komplizierter oder Abstrakter machen, um die Zusammenhänge und Prinzipien und den Nutzen besser zu zeigen.

PS: Hab keine Links da.

PPS: Was genau willst Du denn kapieren?
__________________
mod = master of disaster
Waq ist offline  
Alt 28.03.2006, 19:20  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Willst du OOP/Klassen verstehen oder haperts an der Anwendung?
Zergling-new ist offline  
Alt 28.03.2006, 19:30  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

tja. ich hab ein oscommerce shopsystem. da war bisher alles mit funktionen gelöst.
jetzt fängt das aber mit klassen an. zb. klasse upload für bilder.
da blicke ich absolut nicht mehr durch wo was passiert. deshalb wollte ich das von grund auf lernen.
eine klasse ist für die kategorien mit "nested sets" und das ist auch recht undurchsichtig.

deshalb wollte ich wie gesagt mal die grundlagen kapieren um mich in die thematik einzuarbeiten.
dachte es wäre nicht sooooo viel anders als die funktionen,
denn im grunde sind klassen ja auch nicht viel anders (dachte ich zumindest) oder?

anbei: upload.php bei der ich eine zusätzliche classe oder vererbung für ein thumbnail bild machen wollte.
PHP-Code:
<?php
/*
  $Id: upload.php,v 1.2 2003/06/20 00:18:30 hpdl Exp $

  osCommerce, Open Source E-Commerce Solutions
  [url]http://www.oscommerce.com[/url]

  Copyright (c) 2003 osCommerce

  Released under the GNU General Public License
*/

  
class upload {
    var 
$file$filename$destination$permissions$extensions$tmp_filename$message_location;

    function 
upload($file ''$destination ''$permissions '777'$extensions '') {
      
$this->set_file($file);
      
$this->set_destination($destination);
      
$this->set_permissions($permissions);
      
$this->set_extensions($extensions);

      
$this->set_output_messages('direct');

      if (
tep_not_null($this->file) && tep_not_null($this->destination)) {
        
$this->set_output_messages('session');

        if ( (
$this->parse() == true) && ($this->save() == true) ) {
          return 
true;
        } else {
          return 
false;
        }
      }
    }

    function 
parse() {
      global 
$messageStack;

      if (isset(
$_FILES[$this->file])) {
        
$file = array('name' => $_FILES[$this->file]['name'],
                      
'type' => $_FILES[$this->file]['type'],
                      
'size' => $_FILES[$this->file]['size'],
                      
'tmp_name' => $_FILES[$this->file]['tmp_name']);
      } elseif (isset(
$GLOBALS['HTTP_POST_FILES'][$this->file])) {
        global 
$HTTP_POST_FILES;

        
$file = array('name' => $HTTP_POST_FILES[$this->file]['name'],
                      
'type' => $HTTP_POST_FILES[$this->file]['type'],
                      
'size' => $HTTP_POST_FILES[$this->file]['size'],
                      
'tmp_name' => $HTTP_POST_FILES[$this->file]['tmp_name']);
      } else {
        
$file = array('name' => (isset($GLOBALS[$this->file '_name']) ? $GLOBALS[$this->file '_name'] : ''),
                      
'type' => (isset($GLOBALS[$this->file '_type']) ? $GLOBALS[$this->file '_type'] : ''),
                      
'size' => (isset($GLOBALS[$this->file '_size']) ? $GLOBALS[$this->file '_size'] : ''),
                      
'tmp_name' => (isset($GLOBALS[$this->file]) ? $GLOBALS[$this->file] : ''));
      }

      if ( 
tep_not_null($file['tmp_name']) && ($file['tmp_name'] != 'none') && is_uploaded_file($file['tmp_name']) ) {
        if (
sizeof($this->extensions) > 0) {
          if (!
in_array(strtolower(substr($file['name'], strrpos($file['name'], '.')+1)), $this->extensions)) {
            if (
$this->message_location == 'direct') {
              
$messageStack->add(ERROR_FILETYPE_NOT_ALLOWED'error');
            } else {
              
$messageStack->add_session(ERROR_FILETYPE_NOT_ALLOWED'error');
            }

            return 
false;
          }
        }

        
$this->set_file($file);
        
$this->set_filename($file['name']);
        
$this->set_tmp_filename($file['tmp_name']);

        return 
$this->check_destination();
      } else {
        if (
$this->message_location == 'direct') {
          
$messageStack->add(WARNING_NO_FILE_UPLOADED'warning');
        } else {
          
$messageStack->add_session(WARNING_NO_FILE_UPLOADED'warning');
        }

        return 
false;
      }
    }

    function 
save() {
      global 
$messageStack;

      if (
substr($this->destination, -1) != '/'$this->destination .= '/';

      if (
move_uploaded_file($this->file['tmp_name'], $this->destination $this->filename)) {
        
chmod($this->destination $this->filename$this->permissions);

        if (
$this->message_location == 'direct') {
          
$messageStack->add(SUCCESS_FILE_SAVED_SUCCESSFULLY'success');
        } else {
          
$messageStack->add_session(SUCCESS_FILE_SAVED_SUCCESSFULLY'success');
        }

        return 
true;
      } else {
        if (
$this->message_location == 'direct') {
          
$messageStack->add(ERROR_FILE_NOT_SAVED'error');
        } else {
          
$messageStack->add_session(ERROR_FILE_NOT_SAVED'error');
        }

        return 
false;
      }
    }

    function 
set_file($file) {
      
$this->file $file;
    }

    function 
set_destination($destination) {
      
$this->destination $destination;
    }

    function 
set_permissions($permissions) {
      
$this->permissions octdec($permissions);
    }

    function 
set_filename($filename) {
      
$this->filename $filename;
    }

    function 
set_tmp_filename($filename) {
      
$this->tmp_filename $filename;
    }

    function 
set_extensions($extensions) {
      if (
tep_not_null($extensions)) {
        if (
is_array($extensions)) {
          
$this->extensions $extensions;
        } else {
          
$this->extensions = array($extensions);
        }
      } else {
        
$this->extensions = array();
      }
    }

    function 
check_destination() {
      global 
$messageStack;

      if (!
is_writeable($this->destination)) {
        if (
is_dir($this->destination)) {
          if (
$this->message_location == 'direct') {
            
$messageStack->add(sprintf(ERROR_DESTINATION_NOT_WRITEABLE$this->destination), 'error');
          } else {
            
$messageStack->add_session(sprintf(ERROR_DESTINATION_NOT_WRITEABLE$this->destination), 'error');
          }
        } else {
          if (
$this->message_location == 'direct') {
            
$messageStack->add(sprintf(ERROR_DESTINATION_DOES_NOT_EXIST$this->destination), 'error');
          } else {
            
$messageStack->add_session(sprintf(ERROR_DESTINATION_DOES_NOT_EXIST$this->destination), 'error');
          }
        }

        return 
false;
      } else {
        return 
true;
      }
    }

    function 
set_output_messages($location) {
      switch (
$location) {
        case 
'session':
          
$this->message_location 'session';
          break;
        case 
'direct':
        default:
          
$this->message_location 'direct';
          break;
      }
    }
  }
?>
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 28.03.2006, 19:38  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Huch Upload und Thumbnail vereinen?
Nein das passt nicht zusammen. Du musst Klassen wie tatsächliche Gegenstände (Thumbnail) oder Aktionen (Upload) sehen.

Thumbnail könnte ein Kind von Photo sein, aber wohl eher eine Methoden-Implementierung davon.

Die Upload-Klasse ist mir jetzt etwas zu lang, was hast du vor? Thumbnails für ein hochgeladenes Bild erzeugen?
Zergling-new ist offline  
Alt 28.03.2006, 19:51  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

genau. wollte hier vom upgeloadeten bild ein thumbnail erzeugen. das erzeugen eines thumbnails ist ja nicht schwer. hab da schon diverse funktionen geschrieben die für den fall ok wären. dachte mir dass ich in der bestehenden klasse upload (bei der "function save()") einen parameter übergebe (1 oder 0) und bei zb 1 eine funktion zum generieren eines thumbnails. dachte mir ich könnte das in der klasse upload unterbringen.
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 28.03.2006, 20:04  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Das hat da aber nichts verloren. Denn wenn du das Upload-Skript später noch für was anderes verwenden willst - PDF Upload o.ä., sind Funktionalitäten drinne (JPEG-Thumbnails erzeugen), die darin nichts verloren haben.

Wie wärs mit PEAR HTTP_Upload und Image_Transform()?
Extrem einfach zu bedienende PEAR-Klassen, die deinen Upload managen und dein Bild transformieren.

http://pear.php.net/package/http_upload
http://pear.php.net/package/image_transform
Zergling-new ist offline  
Alt 28.03.2006, 20:27  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

hmmmm. ich muss sagen pear sagt mir so überhaupt nichts (hab gesehen da wir auch mit klassen gearbeitet). hätte das gern rein mit php gelöst.

du sagst ich kann die klasse nicht erweitern wenn ich mir nicht alles "kaputtmachen" will für andere files. aber das könnte ich ja mit einer einfachen if abfrage und getimagesize lösen oder? nach der function save() ein check ob es ein bild ist, wenn ja ein thumbnail davon erzeugen? oder hab ich da einen denkfehler?

deshalb dachte ich mir ich lerne das mal mit den klassen.
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 28.03.2006, 20:52  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

OOP vom Grundprinzip ist relativ einfach.

Eine Klasse beschreibt eine Art Bauplan für ein Objekt. Punkt aus fertig.

Immer gern genommen ist das Beispiel "Auto". Die Klasse "Auto" beschreibt also wie ein Bauplan, was ein "Auto" ist. Die Klasse besteht dabei aus Eigenschaften (= Variablen) und Methoden (=Aktionen u.ä.).

Die Klasse Auto könnte folgendes Beschreiben:
- Jedes Auto hat eine Farbe (=> Eigenschaft Farbe)
- Das Auto hat ein Nummernschild (=> Eigenschaft Kennzeichen)
- Zusätzlich gibt es ein Hersteller und ein Modell (=> Eigenschaft Hersteller, Eigenschaft Modell)
- Das Auto besitzt Identifikationsmerkmale (=> Eigenschaft Seriennummer, Eigenschaft Baujahr usw.)
- Das Auto kann umgespritzt werden (=> Methode umsprintzen oder nach gängiger Mimik Methode setFarbe)
- Das Auto kann fahren (=> Methode bewegDich oder englisch Methode move)

Das ist zunächst die ganze Zauberei zum Grundverständnis.

Alle weiteren Dinge, wie Vererbungen oder was weiss ich noch, lässt sich zunächst ähnlich einfach erklären. Bevor du ernsthaft mit OOP anfangen willst und es auch gleich richtig lernen willst, solltest du dich nicht mit einem komplexen System beschäftigen, sondern an einfachen Beispielen üben.

P.S.: Links habe ich aber auch nicht an der Hand.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 28.03.2006, 21:26  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

danke. das klingt verständlich. ich habe nur nicht ganz verstanden WOZU überhaupt das ding. was kann ich mit der klasse "auto" anfangen? und wo liegt der vorteil zu funktionen? hab bisher immer eine functions.php mit all meinen benötigten funktionen gehabt. warum sind klassen da besser?
__________________
mfg Alexander Haim
Promaetheus ist offline  
 


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
tutorial mysql klassen im oop projekt phpdummi Beitragsarchiv 4 17.01.2007 20:17
Tutorial für Klassen mit PHP5 Matthias959 PHP-Fortgeschrittene 2 20.04.2005 19:30

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php klassen dummies, php klassen verstehen, klasse upload tutorial, php klasse bilder upload tutorial, bezi, oscommerce if (move_uploaded_file($this->file[\'tmp_name\'], $this->destination . $this->filename)) {, \ $messagestack->add_session(success_file_saved_successfully\

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:27 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.