OOP


 
Neues Thema eröffnen   Neue Antwort erstellen    Webmaster Forum -> Hilfe für Webmaster -> PHP / MySQL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Marko
Gast

BeitragOOP Antworten mit Zitat

axinio Internet Marketing
Ich arbeite hin und wieder mit PHP, bin also nur ein Hobbyprogrammier und mit nicht all zu viel Erfahrung.

Ich muss mich in der nächsten Zeit intensiv mit OOP beschäftigen. Und brauche dabei Hilfe um zu verstehen wie das funktioniert. Kennt ihr gute Tutorials. Ich habe mir immer sagen lassen, dass man damit die Arbeit auf Dauer reduzieren kann. WIE?

Danke für euere Antworten!
23 Jun 2006 22:48
wpSEO, das Plugin für WordPress SEO
BB-BF-BM
Gast

Beitrag Antworten mit Zitat

http://tut.php-q.net/klassen.html

Man sieht den Vorteil der objektorientierten Programmierung, wenn man davon ausgeht, dass man einen Hamster hat:
PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php

$hamster_hanni 
= array(
    
'hunger' => 0,
    
'durst' => 0,
    
'muede' => 50
);

function 
hanni_essen$futter )
{
    global 
$hamster_hanni;
    
$hamster_hanni['hunger'] -= 25;
    
$hamster_hanni['durst'] += 10;
    
$hamster_hanni['muede'] += 5;

    if( 
$hamster_hanni['durst'] > 100 || $hamster_hanni['muede'] > 100 )
    {
        die(
'Hamster Hanni ist gestorben');
    }
}

function 
hanni_trinken$getraenk )
{
    global 
$hamster_hanni;
    
$hamster_hanni['durst'] -= 25;
    
$hamster_hanni['hunger'] += 5;
    
$hamster_hanni['muede'] += 5;

    if( 
$hamster_hanni['hunger'] > 100 || $hamster_hanni['muede'] > 100 )
    {
        die(
'Hamster Hanni ist gestorben');
    }
}

function 
hanni_schlafen()
{
    global 
$hamster_hanni;
    
$hamster_hanni['muede'] -= 25;
    
$hamster_hanni['hunger'] += 5;
    
$hamster_hanni['durst'] += 10;

    if( 
$hamster_hanni['hunger'] > 100 || $hamster_hanni['durst'] > 100 )
    {
        die(
'Hamster Hanni ist gestorben');
    }
}

?>
So sieht das vielleicht noch relativ übersichtlich aus: $hamster_hanni ist ein Hamster, den man mit den Funktionen hanni_trinken, hanni_essen und hanni_schlafen trinken, essen bzw. schlafen lassen kann.

Jetzt stell dir mal vor, du hättest zwei Hamster:
PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php

$hamster_hanni 
= array(
    
'hunger' => 0,
    
'durst' => 0,
    
'muede' => 50
);

$hamster_bert = array(
    
'hunger' => 0,
    
'durst' => 0,
    
'muede' => 50
);

function 
hanni_essen$futter )
{
    global 
$hamster_hanni;
    
$hamster_hanni['hunger'] -= 25;
    
$hamster_hanni['durst'] += 10;
    
$hamster_hanni['muede'] += 5;

    if( 
$hamster_hanni['durst'] > 100 || $hamster_hanni['muede'] > 100 )
    {
        die(
'Hamster Hanni ist gestorben');
    }
}

function 
hanni_trinken$getraenk )
{
    global 
$hamster_hanni;
    
$hamster_hanni['durst'] -= 25;
    
$hamster_hanni['hunger'] += 5;
    
$hamster_hanni['muede'] += 5;

    if( 
$hamster_hanni['hunger'] > 100 || $hamster_hanni['muede'] > 100 )
    {
        die(
'Hamster Hanni ist gestorben');
    }
}

function 
hanni_schlafen()
{
    global 
$hamster_hanni;
    
$hamster_hanni['muede'] -= 25;
    
$hamster_hanni['hunger'] += 5;
    
$hamster_hanni['durst'] += 10;

    if( 
$hamster_hanni['hunger'] > 100 || $hamster_hanni['durst'] > 100 )
    {
        die(
'Hamster Hanni ist gestorben');
    }
}

function 
bert_essen$futter )
{
    global 
$hamster_bert;
    
$hamster_bert['hunger'] -= 25;
    
$hamster_bert['durst'] += 10;
    
$hamster_bert['muede'] += 5;

    if( 
$hamster_bert['durst'] > 100 || $hamster_bert['muede'] > 100 )
    {
        die(
'Hamster Bert ist gestorben');
    }
}

function 
bert_trinken$getraenk )
{
    global 
$hamster_bert;
    
$hamster_bert['durst'] -= 25;
    
$hamster_bert['hunger'] += 5;
    
$hamster_bert['muede'] += 5;

    if( 
$hamster_bert['hunger'] > 100 || $hamster_bert['muede'] > 100 )
    {
        die(
'Hamster Bert ist gestorben');
    }
}

function 
bert_schlafen()
{
    global 
$hamster_bert;
    
$hamster_bert['muede'] -= 25;
    
$hamster_bert['hunger'] += 5;
    
$hamster_bert['durst'] += 10;

    if( 
$hamster_bert['hunger'] > 100 || $hamster_bert['durst'] > 100 )
    {
        die(
'Hamster Bert ist gestorben');
    }
}

?>
Jetzt hast du schon doppelt so viel Code, obwohl alle Funktionen bis auf die Namen gleich sind.
einfacher geht das mit OOP:
PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php

class Hamster
{
    var 
$name;
    var 
$durst 0;
    var 
$hunger 0;
    var 
$muede 50;

    function 
Hamster$name )
    {
        
$this->name $name;
    }

    function 
essen$futter )
    {
        
$this->hunger -= 25;
        
$this->durst += 10;
        
$this->muede += 5;

        if( (
$this->durst 100) || ($this->muede 100) )
        {
            die(
'Hamster '.$this->name.' ist gestorben!');
        }
    }

    function 
trinken$getraenk )
    {
        
$this->durst -= 25;
        
$this->hunger += 5;
        
$this->muede += 5;

        if( (
$this->hunger 100) || ($this->muede 100) )
        {
            die(
'Hamster '.$this->name.' ist gestorben!');
        }
    }

    function 
schlafen()
    {
        
$this->muede -= 25;
        
$this->hunger += 5;
        
$this->durst += 10;

        if( (
$this->hunger 100) || ($this->durst 100) )
        {
            die(
'Hamster '.$this->name.' ist gestorben!');
        }
    }
}

$hanni = new Hamster('Hanni');
$bert = new Hamster('Bert');

?>

Ich hoffe, mit Hilfe des oben genannten Tutorials sowie der Klassenbeschreibung auf php.net kannst du meinen Code verstehen, im Moment bin ich zu faul, ein gesamtes Tutorial zu liefern Embarassed
24 Jun 2006 09:03
V4hn
Moderator

Beitrag Antworten mit Zitat

Nicht schlecht deine Hamster BB-BF-BM Very Happy

Ob man mit Objekt Orientierter Programmierung(um das mal ausgeschrieben zu haben Wink)
den Arbeitsaufwand immer senken kann, ist fraglich.
Allerdings wirkt es sich immer stärker aus, je komplexer die Projekte werden...
Man behält leichter die Übersicht und
Arbeit mit mehreren Programmierern wird erheblich einfacher.
Bei kleineren Dingen ist OOP (zumindest für mich) eher verkomplizierend,
so dass ich es dann meist außer Acht lasse.

Das gegebene Tutorial scheint auch ganz gut zu sein um in OOP einzusteigen,
wenn du dich schon mit PHP befasst hast.

_________________
24 Jun 2006 10:47
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
BB-BF-BM
Gast

Beitrag Antworten mit Zitat

Einen Vorteil habe ich unbewusst im Beispiel umgangen:
Angenommen, man hätte am Anfang statt des Arrays
PHP-Code:
1
2
3
4
5
$hamster_hanni = array(
    
'hunger' => 0,
    
'durst' => 0,
    
'muede' => 50
); 
einzelne Variablen da stehen
PHP-Code:
1
2
3
$hamster_hanni_hunger => 0;
$hamster_hanni_durst => 0;
$hamster_hanni_muede => 50

müsste man bei jeder Funktion nicht nur eine Variable global setzen, sondern gleich drei.
Eine Klasse hat den Vorteil, dass alle Eigenschaften (durch $var definiert) in Klassen-Funktionen automatisch global sind, d.h. nicht extra mit global gesetzt werden müssen.
24 Jun 2006 11:49
David
Administrator

Beitrag Antworten mit Zitat

Vielleicht ist die Objekt orientierte Programmierung in der Tat etwas aufwendiger, allerdings gleichzeitig sehr praktisch, besonders bei größeren Projekten. Man muss ja das Rad nicht neu erfinden und kann immer wieder auf eine Funktion / Klasse zurückgreifen, ohne ein individuelles Script jedes Mal schreiben zu müssen.

Die Theorie habe ich schon drauf und mir sind auch die Vorteile bekannt Smile. Ich bin dazu aber noch nicht gekommen in irgendeinem Projekt etwas umzusetzen.

In den nächsten Tagen werde ich damit anfangen und euch bestimmt mit vielen Fragen nerven Razz

PS: Worüber ich mich auch freuen würde sind weiterführende Links zu guten Tutorials, die sich mit OOP beschäftigen - und vorerst mit einfachen Beispielen.

_________________
MfG David Mirzoian
axinio Internet Marketing - professionelle Suchmaschinenoptimierung
24 Jun 2006 12:24
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Breezzer
Mitglied

Beitrag Antworten mit Zitat

hier mal ein paar links, hab nicht alle überprüft - sollte aber alle ganz akzeptabel sein, sonnst hätte ich sie net aufgehoben Razz

http://tut.php-q.net/klassen.html
http://www.html-world.de/program/php_7.php
http://www.oszhdl.be.schule.de/gymnasium/faecher/informatik/oop/
http://de3.php.net/manual/de/language.oop5.php
http://www.devmag.net/webprog/php_oop_1.htm



sollte doch erstmal reichen...viel spass damit Smile

_________________
BS-Media

Kauft bei Amazon indem ihr diesem Link folgt und tut was gutes! Jede Provision die so erlangt wird fliesst einem UNICEF-Projekt zu.
26 Jun 2006 10:14
Benutzer-Profile anzeigen Private Nachricht senden
axinio Internet Marketing
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Webmaster Forum -> Hilfe für Webmaster -> PHP / MySQL Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu: