OOP leren

Overzicht Reageren

Pagina: « vorige 1 2 3 4 volgende »

Roeltje M

Roeltje M

25/08/2009 13:30:00
Quote
hierbij:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
include("oop.php");

if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    try
    {
        $db = new PDO('mysql:host=localhost;dbname=vuvuzela_db','vuvuzela_db','**');
        $log = new UserSessionController($db);
        $log->login($_POST['user'],$_POST['pass']);    
    }

    catch(Exception $e)
    {

        echo "Kuuuuut: " . $e->getMessage();
    }
}

?>

<form method="post">
<input type='text' name="user" /><br />
<input type='password' name='pass' /><br />
<input type='submit'  />
</form>
Gewijzigd op 01/01/1970 01:00:00 door Roeltje M
 
PHP hulp

PHP hulp

09/02/2012 05:25:07
Gesponsorde koppelingen:
 
Jelmer rrrr

Jelmer rrrr

25/08/2009 13:54:00
Quote
Hmm. Als je geen errors en warnings, en zelfs geen notices krijgt denk ik niet dat er iets mis is met de code zelf. Klopt de database, kloppen de waarden in de database? Als je een login-formulier op de meest simpele manier maakt, werkt het dan wel?
 
Roeltje M

Roeltje M

25/08/2009 15:08:00
Quote
Het werkt! Bedankt! kan ik weer verder!

Hoe vertaal ik dit in OOP: http://yfrog.com/0h69493364j?

Moet ik dan een classname met LadeController en LoperController of zit ik dan verkeerd te denken?
Gewijzigd op 01/01/1970 01:00:00 door Roeltje M
 
Willem vp

Willem vp

25/08/2009 16:06:00
Quote
Nog even terugkomen op een oude vraag van je:
roel schreef op 20.07.2009 22:03:
d. Wat is beter, variabelen BUITEN de echo halen of gewoon erin laten staan (omdat het ook werkt en het onnodig tijd kost?

Het beste is wat je zelf het handigst vindt werken.

Zelf vind ik het vaak verschrikkelijk onleesbaar als alle variabelen buiten de quotes worden gehaald. Vooral als je een SQL-query met 20 variabelen aan het maken bent, krijg je een oerwoud van komma's en quotes. Het kost dan onnodig tijd om te zoeken waar je ergens een quote'je verkeerd hebt neergezet ;-)

Wat PHP betreft hoef je je niet druk te maken of het onnodig tijd kost. De verschillen zijn verwaarloosbaar, omdat in het ene geval PHP enkele microseconden langer bezig zal zijn om de string te expanderen, en in het andere geval enkele microseconden langer nodig heeft om de string te parsen. Uiteindelijk scheelt het niets.

Als je wilt optimaliseren, kun je dat beter op iets anders doen. OOP overboord gooien, bijvoorbeeld.
Gewijzigd op 01/01/1970 01:00:00 door Willem vp
 
Roeltje M

Roeltje M

25/08/2009 21:58:00
Quote
Hoe vertaal ik dit in OOP: http://yfrog.com/0h69493364j?

Moet ik dan een classname met LadeController en LoperController of zit ik dan verkeerd te denken?
 
Jan Koehoorn

Jan Koehoorn

25/08/2009 22:04:00
Quote
Als je praat over Controllers, praat je over MVC en dat is een OOP design pattern. Als je echt OOP wilt leren, verdiep je dan eerst in de grondbeginselen.

Als je alleen maar een site voor jezelf nodig hebt, hoef je geen OOP te leren. De voordelen van OOP komen pas tevoorschijn als je projecten schaalbaar moeten worden en als je met meer dan 1 persoon aan een project werkt.
 
Roeltje M

Roeltje M

25/08/2009 22:07:00
Quote
Ik heb me al enkele keren verdiept in tutorials over OOP (ook die van hier). En dit is geen site voor mezelf ;)
 
Jan Koehoorn

Jan Koehoorn

25/08/2009 22:09:00
Quote
Oké, maar begin dan met simpele dingen. Een winkelwagen is meteen al vrij ingewikkeld.

Edit 1:
Opdracht: schrijf een PHP OOP programma'tje dat een koe laat loeien, een leeuw laat brullen, en een geit laat mekkeren.

Edit 2:
Morgenavond geef ik mijn oplossing, voor wie het weten wil.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Matthias

Matthias

26/08/2009 08:22:00
Quote
Ik had mijn versie ingedient,
maar ze staat er nietmer tussen :s
 
Jan Koehoorn

Jan Koehoorn

26/08/2009 09:01:00
Quote
Matthias schreef op 26.08.2009 08:22:
Ik had mijn versie ingediend,
maar hij staat er niet meer tussen.

Gek he? Alleen OOP please.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Robert Deiman

Robert Deiman

26/08/2009 09:29:00
Quote
Ik zit dit topic ook te volgen omdat ik toch maar weer begonnen ben OOP op te pakken, hier mijn invulling. Volgens mij heb ik de methods niet goed gedaan, maar weet ook niet precies hoe ik dat in moet vullen.
Voor zover ik het heb begrepen heb je een classe "Dier".. Immers een koe, geit en leeuw zijn allemaal dieren. Nu heb ik een koe/ geit en leeuw class gemaakt die allen de "Dier" class extenden. Of dat een goede opzet is betwijfel ik ten zeerste.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
class Dier
{
    public $naam;
    public $type;

    function
Dier($naam = 'Dier', $soort = 'Dier')
    {

        $this->naam = $naam;
        $this->type = $soort;
    }
}

class Koe extends Dier
{
    function
Geluid()
    {

        $this->Geluid = 'Meeuuuhhh';
    }
}

class Leeuw extends Dier
{
    function
Geluid()
    {

        $this->Geluid = 'Roaaar';
    }
}

class Geit extends Dier
{
    function
Geluid()
    {

        $this->Geluid = 'Mèèèèè';
    }
}

?>
 
Mark D

Mark D

26/08/2009 10:02:00
Quote
Ik kom op zoiets uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

class Dier
{
    private $naam;
    private $type;
    private $geluid;

    function
Dier($naam = null, $soort = null)
    {

        $this->naam = $naam;
        $this->type = $soort;
    }
    
    function
getNaam()
    {

        return $this->naam;
    }
    
    function
getSoort()
    {

        return $this->type;
    }
    
    function
getGeluid()
    {

        return $this->geluid;
    }
}


class Koe extends Dier
{
    function
__construct($naam)
    {

        parent::__construct($naam, 'koe');
        
        $this->geluid = 'Meeuuuhhh';
    }
}


class Leeuw extends Dier
{
    function
__construct($naam)
    {

        parent::__construct($naam, 'leeuw');
        
        $this->geluid = 'Roaaar';
    }
}


class Geit extends Dier
{
    function
__construct($naam)
    {

        parent::__construct($naam, 'geit');
        
        $this->geluid = 'Mèèèèè';
    }
}


$koe = new Koe('bella');
echo $koe->getName() . " is een " . $koe->getSoort() . " en maakt het geluid: " . $koe->getGeluid();

// en hier dan hetzelfde voor de leeuw en geit

?>
Gewijzigd op 01/01/1970 01:00:00 door Mark D
 
Jan Koehoorn

Jan Koehoorn

26/08/2009 12:12:00
Quote
Kijk, twee voorbeelden al. Hopelijk komen er nog een paar bij, want op deze manier leer je volgens mij het snelst ;-)
 
Mark D

Mark D

26/08/2009 12:29:00
Quote
Ik heb nog een aanpassing gedaan. Ik heb het setten van de geluid variabele uit de constructor gehaald, aangezien dat volgens de posts van Jelmer daar niet hoort.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

class Dier
{
    private $naam;
    private $type;
    private $geluid;

    function
Dier($naam = null, $soort = null)
    {

        $this->naam = $naam;
        $this->type = $soort;
    }
    
    function
getNaam()
    {

        return $this->naam;
    }
    
    function
getSoort()
    {

        return $this->type;
    }
}


class Koe extends Dier
{
    function
__construct($naam)
    {

        parent::__construct($naam, 'koe');
    }

    function
getGeluid()
    {

        return 'Meeuuuhhh';
    }
}


class Leeuw extends Dier
{
    function
__construct($naam)
    {

        parent::__construct($naam, 'leeuw');
    }

    function
getGeluid()
    {

        return 'Roaaar';
    }
}


class Geit extends Dier
{
    function
__construct($naam)
    {

        parent::__construct($naam, 'geit');
    }

    function
getGeluid()
    {

        return 'Mèèèèè';
    }
}


$koe = new Koe('bella');
echo $koe->getName() . " is een " . $koe->getSoort() . " en maakt het geluid: " . $koe->getGeluid();

// en hier dan hetzelfde voor de leeuw en geit

?>


Ik hoor vanavond/morgen graag welke er beter is ;) (ook de reden waarom ik de oude laat staan en mn post niet edit)
Gewijzigd op 01/01/1970 01:00:00 door Mark D
 
Matthias

Matthias

26/08/2009 13:08:00
Quote
ik snap het script omgeveer alleen op dit laatste stuk slaag ik tilt :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$koe = new Koe('bella');
echo $koe->getName() . " is een " . $koe->getSoort() . " en maakt het geluid: " . $koe->getGeluid();
 
Mark D

Mark D

26/08/2009 13:25:00
Quote
In die regels wordt een variabele ($koe) aangemaakt die een object van een koe met de naam bella. Op de 2e regel wordt van deze koe de naam opgevraagd (bella), de soort (koe) en het geluid (Meeuuuhhh) en dit wordt in een zinnetje geplakt.
Gewijzigd op 01/01/1970 01:00:00 door Mark D
 
PHP hulp

PHP hulp

09/02/2012 05:25:07
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Jelmer rrrr

Jelmer rrrr

26/08/2009 18:14:00
Quote
Oeh, kan het nog? Niet te laat? Mijn inzending. Geen design patterns, niets nuttigs uit te leren als je websites wilt maken, maar omdat het kan...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php

class Positie
{
    protected $x;
    
    protected $y;
    
    public function __construct($x, $y)
    {

        $this->x = $x;
        
        $this->y = $y;
    }

    
    public function x()
    {

        return $this->x;
    }

    
    public function y()
    {

        return $this->y;
    }

    
    public function is_equal_to(Positie $other)
    {

        return $this->x == $other->x && $this->y == $other->y;
    }
    
}


interface Roepbaar
{
    public function roepnaam();
}


interface Verplaatsbaar
{
    public function verplaats_naar(Positie $positie);
}


interface Hoorbaar
{
    public function maak_geluid();
}


abstract class Dier /* extends Levend_Wezen? */
{
    protected $positie;
    
    public function __construct(Positie $positie)
    {

        $this->positie = $positie;
    }

    
    public function rijk()
    {

        return 'Dierenrijk';
    }

    
    abstract public function soort();
}


class Slak extends Dier implements Verplaatsbaar
{
    public function soort()
    {

        return 'Slak';
    }

    
    public function verplaats_naar(Positie $b)
    {

        if($this->positie->is_equal_to($b))
            return true;
        
        $this->beweeg_duizenden_beendjes_in_de_richting_van($b);
    }
    
}


class Huishond extends Dier implements Verplaatsbaar, Hoorbaar, Roepbaar
{
    private $roepnaam;
    
    public function __construct($roepnaam, Positie $positie)
    {

        $this->roepnaam = $roepnaam;
        
        parent::__construct($positie);
    }

    
    public function soort()
    {

        return 'Kuthondje'; // ja, dat is een soort
    }
    
    public function verplaats_naar(Positie $b)
    {

        if($this->positie->is_equal_to($b))
            return true;
        
        $this->beweeg_vier_pootjes_en_klieder_alles_onder_met_slijm($b);
    }

    
    public function maak_geluid()
    {

        echo 'Ugh ugh!';
    }

    
    public function roepnaam()
    {

        return $this->roepnaam;
    }
}


$huisslak = new Slak(new Positie(0, 0));

$puk = new Huishond('Puk', new Positie(0, 2));

?>
 
Jan Koehoorn

Jan Koehoorn

26/08/2009 18:51:00
Quote
Mijn variant:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
    ini_set ('display_errors', 1);
    error_reporting (E_ALL | E_STRICT);

    interface Geluid {
        public function laatHoren ();
    }

    
    abstract class Dier {
        public $geluid;
        
        public function __construct ($geluid) {
            $this->geluid = $geluid;
        }
    }

    
    class Loeien implements Geluid {
        public function laatHoren () {
            return '<p>boeoeoeoe!</p>';
        }
    }

    class Brullen implements Geluid {
        public function laatHoren () {
            return '<p>groaaaar!</p>';
        }
    }

    class Mekkeren implements Geluid {
        public function laatHoren () {
            return '<p>bèèèèèèèèh!</p>';
        }
    }

    
    class Stil implements Geluid {
        public function laatHoren () {
            return '<p>...</p>';
        }
    }

    
    class Koe extends Dier {
        // verdere functionaliteit die alleen op koeien van toepassing is
    }
    
    class Leeuw extends Dier {
        // verdere functionaliteit die alleen op leeuwen van toepassing is
    }
    
    class Tijger extends Dier {
    
    }

    
    class Geit extends Dier {
        // verdere functionaliteit die alleen op geiten van toepassing is
    }
    
    class Regenwurm extends Dier {
        // verdere functionaliteit die alleen op regenwurmen van toepassing is
    }
    
    $koe            = new Koe (new Loeien ());
    $leeuw        = new Leeuw (new Brullen ());
    $tijger        = new Tijger (new Brullen ());
    $geit            = new Geit (new Mekkeren ());
    $regenwurm    = new Regenwurm (new Stil ());
    
    echo $koe->geluid->laatHoren ();
    echo $leeuw->geluid->laatHoren ();
    echo $tijger->geluid->laatHoren ();
    echo $geit->geluid->laatHoren ();
    echo $regenwurm->geluid->laatHoren ();
?>
 
Matthias

Matthias

26/08/2009 18:51:00
Quote
wat is allemaal het verschil tussen private / public functions??
 
Jan Koehoorn

Jan Koehoorn

26/08/2009 20:04:00
Quote
Matthias schreef op 26.08.2009 18:51:
wat is allemaal het verschil tussen private / public functions??


Een public functie mag aangeroepen worden
- binnen zijn eigen class
- binnen childclasses
- buiten een class

Een protected functie mag aangeroepen worden
- binnen zijn eigen class
- binnen childclasses

Een private functie mag aangeroepen worden
- binnen zijn eigen class
 

Pagina: « vorige 1 2 3 4 volgende »



Overzicht Reageren

Get Adobe Flash player