Applicatie naamgeving

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3

Pim -

Pim -

20/12/2011 14:32:50
Quote Anchor link
In Active-Record:
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
<?php
abstract class Model
{
    // Eoa DB abstractie laag
    protected static $_db;

    // De 'static method factory'
    // Een statische methode die een klasse opbouwt
    // (in het specifiek de 'eigen' klasse, omdat getById
    //  aangeroepen wordt op de User klasse en het dan User object teruggeeft


    public static function getById($id)
    {

        // Roep de DB abstractielaag aan
        // Laat hem $this->table gebruiken, dat wordt ingevuld
        // Door de specifieke klasse, en het argument als ID

        $data = self::$_db->select($this->_table, $id);

        // Maak zichzelf aan
        // Het 'static' keyword verwijst naar de uiteindelijke (sub)klasse, bijv. User
        // Het 'self' keyword verwijst naar deze klasse, dus Model
        // En laat deze vullen door de constructor

        return new static($data);
    }


    // Vul het object met de data uit de array
    // Niet noodzakelijk voor mijn verhaal
    // Misschien wel leuk om naar te kijken

    public function __construct(array $data = array())
    {

        // Vraag alle properties op
        $properties = get_object_vars($this);

        // Vul alleen de properties zonder _ vooraan. Zo kan je een onderscheid maken tussen hulpvariabelen en 'echte' variabelen die in de DB kunnen staan
        $properties = array_filter($properties, function($prop) {
            return strpos($prop, '_') !== 0;
        });


        
        // Als de naam van de een property voorkomt in $data, vul dan
        // De property met de gegeven waarde

        foreach($properties as $key => $val)
        {

            if(isset($data[$key]))
                $this->$key = $data[$key];
        }
    }


    // Ter volledigheid
    public function save()
    {

        self::$_db->save($this);
    }
}


class User extends Model
{
    protected $_table = 'users';
    protected $name;
    protected $password;

    public function getName()
    {

        return $this->name;
    }


    public function setName($name)
    {

        $this->name = $name;
    }
}


//Gebruik:
$user = User::getById($id);
$user->getName();
$user->setName('Pim');
$user->save();

?>


Toevoeging op 20/12/2011 14:45:15:

Is het een beetje duidelijk?
Gewijzigd op 20/12/2011 14:45:41 door Pim -
 
PHP hulp

PHP hulp

28/03/2024 14:04:41
 
Ozzie PHP

Ozzie PHP

20/12/2011 16:03:30
Quote Anchor link
Ah... dat ziet er mooi uit :)
Dankjewel!

Zou je die class Model in de praktijk ook zo noemen? Of noem je het dan anders?
 
Pim -

Pim -

20/12/2011 16:14:21
Quote Anchor link
Eh, AvtiveRecord oid

Toevoeging op 20/12/2011 16:24:48:

Leuk bruggetje naar de topic titel trouwens :-P
 
Ozzie PHP

Ozzie PHP

20/12/2011 16:29:27
Quote Anchor link
Ah oké, thanks Pim!
 
Pim -

Pim -

20/12/2011 17:20:43
 
Wouter J

Wouter J

20/12/2011 17:55:56
Quote Anchor link
Pim, bedankt voor al die nuttige informatie, links en code die je telkens weer geeft! Het is echt een groot voorbeeld van hoe OOP eruit ziet en ik heb er veel aan!
 
Pim -

Pim -

20/12/2011 20:10:16
Quote Anchor link
Graag gedaan :-)
Ik moet toch iets verzinnen om de tentamenvoorbereiding nog wat uit te kunnen stellen :-P
 

Pagina: « vorige 1 2 3



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.