[check] OOP Page class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# .NET Software Ontwikkelaar

Wie wordt jouw werkgever?: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever levert software voor bedrijfssystemen. Ben jij een ervaren developer? Heb jij ervaring met .NET en C#? Vaste baan: C# .NET Software Ontwikkelaar Agile Scrum 3.200 - 5.000 C# .NET Software Developer Deze werkgever is specialist in documentcreatie. Deze werkgever heeft ruim ervaring met huisstijlautomatisering, het vereenvoudigen van documentcreatie en optimaliseren van document-workflow. Deze werkgever is trotse ontwikkelaar en leverancier van flexibele software waarmee eenvoudig altijd in huisstijl gewerkt wordt. Bij bij hun werk je aan onze

Bekijk vacature »

HBO WO PHP Software Developer JavaScript

Over de werkgever: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is actief in software ontwikkeling, domeinregistratie en internationale online marketing. Ben jij een ervaren PHP Developer? Heb je veel kennis van MySQL? Vaste baan: PHP Developer CSS MySQL 2.700 - 4.000 PHP Developer Deze werkgever is een softwarebedrijf, die mooie eigen innovatieve applicaties maakt. Je komt te werken in een ervaren team. Zij bieden een uitdagende en informele werksfeer met volop mogelijkheden om je verder te ontwikkelen met behulp van trainingen en certificeringen. Deze werkgever is een

Bekijk vacature »

PC Programmeur Delphi

Over het bedrijf: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever levert industriële besturingssystemen, software en kennis. Ben jij een enthousiaste PC programmeur? Heb je kennis van C++? Vaste baan: PC Programmeur Delphi C++ 3.000 - 4.700 PC Programmeur Deze werkgever is specialist op gebied van vision en ontwikkelen wereldwijd speciale machines. Wij verzorgen zelf de besturingstechniek. Deze werkgever is sterk in GPS systemen en leveren ook complete lijnen voor de verpakkingsindustrie. Wij streven naar verbetering, innovatie van complete machinelijnen. Wij hebben op gebied van engineering veel kennis

Bekijk vacature »

Android (mobile) Developer met JAVA in de regio Al

Bedrijfsomschrijving Mobile Development en Ops Engineering gaan hand in hand bij deze organisatie dat een hoog verantwoordelijkheidsgevoel draagt. Als organisatie ontwikkelt zij dan ook veelal mobiele applicaties ter inspiratie en ondersteuning van belangrijke sectoren in Nederland. Met het technische team van gepassioneerde developers en engineers voeren ze dagelijks veelal diverse, inspirerende en complexe werkzaamheden uit. Door gebruik van innovatieve software en de nieuwste platformen binnen de sector is deze klant dan ook zeker als vooruitstrevend te betitelen waar zijn enorm veel waarde aan hecht. De organisatie is momenteel zeer succesvol en zet mooie stappen richting de toekomst en daarom kunnen

Bekijk vacature »

HBO WO .Net Developer IoT

Bij welk bedrijf je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is gespecialiseerd in het op afstand bewaken en besturen van machines en processen. Ben jij een ervaren .Net developer? Heb jij ervaring met het verbeteren en implementeren van .NET applicaties? Vaste baan: .Net Developer IoT Software 3.000 - 4.800 .Net Developer Deze werkgever is een snel groeiende onderneming gespecialiseerd in het op afstand bewaken en besturen van machines en processen, IoT (Internet of Things). Deze werkgever is een veelzijdige organisatie. Je werkt voor de

Bekijk vacature »

C++ Developer Python IT

Over de werkgever: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Wij verzorgen softwarediensten voor navigatiesystemen in de automotive branche. Ben jij een C++ Developer? Heb je ervaring met Linux? Vaste baan: C++ Developer Python IT Python 3.700 - 5.200 C++ Developer Deze werkgever is specialist in het ontwikkelen van software navigatie oplossingen voor de automotive. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Deze werkgever staat open voor elke

Bekijk vacature »

Medior Software Engineer

Ons aanbod Werken voor Veynex Embedded Software betekent : Werken aan uitdagende state-of-the-art projecten Hybride werken 60 % thuis en 40 % op kantoor Flexibele werktijden 32 tot 40 uur per week Faciliteren kantoor aan huis Thuiswerk- én onkostenvergoeding Arbeidscontract voor onbepaalde tijd Bovengemiddeld salaris Ruime en flexibele mobiliteitsregeling Vergoeding voor bedrijfsfitness Ruim ontwikkelbudget voor opleiding en coaching Deelnemen aan de nodige social events Uitstekende secundaire en tertiaire voorwaarden Én ..... Jij zoekt een inspirerende plek om te werken. Een uitdagende baan. De ruimte om écht iets te kunnen ondernemen. Jij zoekt een mooie baan in de techniek. In onderzoek

Bekijk vacature »

C# Developer

We are looking for a C# Developer. You will join the team who is developing and enhancing our suite of software applications. For our various business lines we gather large volumes of data. This data needs to be combined, refined and cleaned in order to distil information and insights on the world around us. As a software developer you play a key part in enabling our engineers to perform this task. Our software integrates with software developed by other teams inside and outside the organization. We employ cloud base technology to make the information in other software discoverable and accessible

Bekijk vacature »

ICT beheerder toegankelijkheid en domotica

Wij zijn opzoek naar jou! Dit krijg je een afwisselende, uitdagende en interessante functie voor 36 uur per week aandacht voor je persoonlijke ontwikkeling, o.a. door opleidingen vanuit onze eigen academie een enthousiast team van resultaatgerichte en gedreven, bevlogen collega’s die je ideeën en inbreng waarderen een innovatieve werkomgeving met veel aandacht voor vernieuwing en professionalisering een contract voor de duur van een jaar met de intentie om te verlengen voor onbepaalde tijd laptop, tablet en mobiele telefoon mogelijkheden om vanuit huis te werken aanvullende arbeidsvoorwaarden als collectieve verzekeringen en fietsplan Dit ga je doen je ondersteunt de verschillende Visio-locaties

Bekijk vacature »

C# Developer Sofwarebureau Vastgoed

Wie wordt jouw werkgever?: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever heeft onderscheidende 3D technologie. Wil jij werken als C# Developer? Heb jij ervaring met Microsoft SQL Server? Vaste baan: C# Developer Sofwarebureau Vastgoed SQL 3.700 - 4.800 C# Developer Deze werkgever levert speciale software voor taxatiedoeleinden. Hierbij hebben wij een webbased waarderingsapplicatie ontwikkeld. Deze werkgever is een bedrijf dat medewerkers betrekt, ze verantwoordelijk maakt en waarbij je ook contact hebt met de eindgebruiker. Kortom een organisatie waar enorm veel uitdagingen liggen voor een developer! Bij bij

Bekijk vacature »

.NET Developer ICT

Voor wie je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is een full service digital agency bedrijf. Ben jij een .NET Developer? Heb je ervaring met Embrace of Episerver? Vaste baan: .NET Developer ICT Agile Scrum 3.000 - 4.800 .NET Developer Deze werkgever is de Drupal specialist in Nederland. Deze werkgever heeft meerdere vestigingen door Nederland en België heen. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Wat wordt er

Bekijk vacature »

Embedded Software Developer (C, C++)

For our high-tech business partner, we are in search of a Software Design Engineer / Software Developer with a MSc. or BSc. In Computer Science and relevant experience in C, C++. Do you like to work in a challenging environment in which you are able to work on world changing technology? Read on and apply! Functie As a Software Design Engineer / Software Developer you are responsible for the development and realization of software solutions to make the machines of our business client run. It is your challenge to make the machines run as smoothly as possible, so that they

Bekijk vacature »

C# .NET Software Ontwikkelaar C#

Over het bedrijf: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is gespecialiseerd in auto-onderdelen. Wil jij werken als .Net Developer? Heb jij ervaring met .Net? Vaste baan: C# .NET Software Ontwikkelaar C# Autobranche 2.400 - 3.800 .NET Developer Wij ontwikkelen software om vraag en aanbod van onderdelen van personenauto's bij elkaar te brengen. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Jouw werkzaamheden als C# .NET Software Ontwikkelaar C#: Voor de vacature

Bekijk vacature »

Java Software Developer Spring Hibernate

Wie wordt jouw werkgever?: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is expert in informatie- en communicatieoplossingen. Ben jij een Senior Java Software Engineer? Heb jij ervaring met Java? Vaste baan: Java Software Developer Spring Hibernate Linux 3.800 - 5.500 Java Software Engineer Zij zijn een financieel gezond en onafhankelijk bedrijf, met een erg leuke informele werksfeer. Er is ruimte voor flexibiliteit en eigen input. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het

Bekijk vacature »

Software Ontwikkelaar .NET

Voor wie je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Zij bieden innovatieve oplossingen die bedrijven efficiënter en wendbaarder maken. Ben jij een enthousiaste software developer? Heb je ervaring met C#, C++, Java, Javascript of Python? Vaste baan: Software Ontwikkelaar .NET HBO 3.000 - 4.500 Software Developer Zij bieden innovatieve oplossingen die bedrijven efficiënter en wendbaarder maken, waardoor onze klanten zich net zo snel kunnen ontwikkelen als de business van hen vraagt. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest

Bekijk vacature »
Boris Mattijssen

Boris Mattijssen

31/12/2009 13:11:00
Quote Anchor link
Hallo allemaal,

Na het lezen van de tut van Blache wilde ik een kijken of mijn eigen OOP kunsten een beetje in orde zijn.

Nu heb ik deze 2 classes:

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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<?php

/**
* CLASS
*/


class Page {
    private $_id;
    private $_title;
    private $_content;
    private $_parentId;
    private $_isHome;
    
    public function __construct() {
        $this->_id         = 0;
        $this->_title         = '';
        $this->_content     = '';
        $this->_parentId     = null;
        $this->_isHome         = 0;
    }

    
    public function setId($id) {
        if(ctype_digit($id)) {
            $this->_id = $id;
        }
else {
            throw new Exception('Id is not a digit.');
        }
    }

    
    public function setTitle($title) {
        if(ctype_alnum($title)) {
            $this->_title = $title;
        }
else {
            throw new Exception('Title is not alphanumaric.');
        }
    }

    
    public function setContent($content) {
        $this->_content = $content;
    }

    
    public function setParentId($parentId) {
        if(ctype_digit($parentId) || $parentId === null) {
            $this->_parentId = $parentId;
        }
else {
            throw new Exception('ParentId is neither a digit nor NULL.');
        }
    }

    
    public function setIsHome($isHome) {
        if($isHome == 0 || $isHome == 1) {
            $this->_isHome = $isHome;
        }
else {
            throw new Exception('IsHome is not 0 or 1.');
        }
    }

    
    public function getId() {
        return $this->_id;
    }

    
    public function getTitle() {
        return $this->_title;
    }

    
    public function getContent() {
        return $this->_content;
    }

    
    public function getParentId() {
        return $this->_parentId;
    }

    
    public function getIsHome() {
        return $this->_isHome;
    }
}


class Page_Controller {
    private function $_page;
    
    public function __construct(Page $page) {
        $this->_page = $page;
    }

    
    public function new() {
        mysql_query("
        INSERT INTO
            pages
            (
                title,
                content,
                parent_id,
                is_home
            )
        VALUES
            (
                '"
. $this->_page->getTitle() . "',
                '"
. mysql_real_escape_string($this->_page->getContent()) . "',
                '"
. $this->_page->getParentId() . "',
                '"
. $this->_page->getIsHome() . "'
            )
        "
);
    }

    
    public function edit() {
        mysql_query("
        UPDATE
            pages
        SET
            title        = '"
. $this->_page->getTitle() . "',
            content        = '"
. mysql_real_escape_string($this->_page->getContent()) . "',
            parent_id    = '"
. $this->_page->getParentId() . "',
            is_home        = '"
. $this->_page->getIsHome() . "'
        WHERE
            id         = '"
. $this->_page->getId() . "'
        "
);
    }

    
    public function delete() {
        mysql_query("DELETE FROM pages WHERE id = '" . $this->_page->getId() . "'");
    }

    
    public function getData() {
        $result = mysql_query("SELECT * FROM pages WHERE id = '" . $this->_page->getId() . "'");
        return mysql_fetch_assoc($result);
    }
}


/**
* USAGE
*/


try {
    /* create a page */
    $page = new Page();
    $page->setTitle('Sub pagina');
    $page->setContent('Lorum ipsum..');
    $page->setParentId(1);
    $page->setIsHome(0);
    
    $pageController = new Page_Controller($page);
    $pageController->new();
    
    /* edit a page */
    $page = new Page();
    $page->setId(1);
    $page->setTitle('Hoofd pagina');
    $page->setContent('Lipsum lorum pipsum..');
    $page->setParentId(null);
    $page->setIsHome(1);
    
    $pageController = new Page_Controller($page);
    $pageController->edit();
    
    /* delete a page */
    $page = new Page();
    $page->setId(1);
    
    $pageController = new Page_Controller($page);
    $pageController->delete();
    
    /* get data of a page */
    $page = new Page();
    $page->setId(1);
    
    $pageController = new Page_Controller($page);
    print_r($pageController->getData());
    
}
catch (Exception $e) {
    echo 'Caught exception: '. $e->getMessage() ."\n";
}


?>


Ik heb er voor gekozen om verschillende "set" functies te maken, en niet alles via de constructor mee te geven.
Dit heb ik gedaan omdat je bij het verwijderen van een pagina alleen het id nodig hebt, bij het bewerken echter ook de titel, inhoud etc..

Ik hoor graag jullie mening.

Groetjes,
Boris

ps: ik zou idd een PDO achtig iets moeten gebruiken voor m'n database werk, maar dit heb ik net ff snel in elkaar geflanst had geen zin om dat uit te gaan zoeken. Misschien dat ik dat na jullie reviews nog ff doe.. ;)
 
PHP hulp

PHP hulp

23/05/2022 18:53:42
 
Joren de Wit

Joren de Wit

31/12/2009 13:22:00
Quote Anchor link
In de Page_Controller:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
private function $_page;
?>

Dit klopt niet, je moet 'function' daar even weghalen.

Verder zijn die mysql_query()'s daar niet erg gelukkig. In principe zou je nu een query uit proberen te voeren zonder dat er een verbinding met de database opgezet is. Dat zul jij dus altijd nog moeten doen voordat je deze class gebruikt en dat is niet gewenst. (Maar dat zei je zelf ook al :))

Quote:
Dit heb ik gedaan omdat je bij het verwijderen van een pagina alleen het id nodig hebt, bij het bewerken echter ook de titel, inhoud etc..
Bij het verwijderen heb je dan ook niet per se een Page object nodig. Je zou ervoor kunnen kiezen om je Page_Controller te voorzien van een method deletePageById($pageId). In de constructor van je Page_Controller moet je dan ook geen Page object vragen, je kunt het Page object ook meegeven op het moment dat je de actie uitvoert. Wat je wél aan die constructor mee zou moeten geven, is een Database object dat de communicatie met de database verzorgt.
 
Boris Mattijssen

Boris Mattijssen

31/12/2009 14:57:00
Quote Anchor link
Blanche,
Dat was idd een typo, en ik heb er nu ook een database klasse bij gebouwd (of eigenlijk gekopieerd van php.net)

Resultaat:
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
<?php

/**
* CLASS
*/


class DB {
    protected static $_host     = 'localhost';
    protected static $_user     = 'root';
    protected static $_pass     = '***';
    protected static $_dbname    = 'site_db';
    
    private static $objInstance;

    private function __construct() {}
    private function __clone() {}

    public static function getInstance(  ) {
        if(!self::$objInstance){
            self::$objInstance = new PDO('mysql:host=' . self::$_host . ';dbname=' . self::$_dbname, self::$_user, self::$_pass);
            self::$objInstance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }

        return self::$objInstance;
    }


    final public static function __callStatic( $chrMethod, $arrArguments ) {
        $objInstance = self::getInstance();
        return call_user_func_array(array($objInstance, $chrMethod), $arrArguments);
    }
}


class Page {
    private $_id;
    private $_title;
    private $_content;
    private $_parentId;
    private $_isHome;
    
    public function __construct() {
        $this->_id         = 0;
        $this->_title         = '';
        $this->_content     = '';
        $this->_parentId     = null;
        $this->_isHome         = 0;
    }

    
    public function setId($id) {
        if(ctype_digit($id)) {
            $this->_id = $id;
        }
else {
            throw new Exception('Id is not a digit.');
        }
    }

    
    public function setTitle($title) {
        if(ctype_alnum($title)) {
            $this->_title = $title;
        }
else {
            throw new Exception('Title is not alphanumaric.');
        }
    }

    
    public function setContent($content) {
        $this->_content = $content;
    }

    
    public function setParentId($parentId) {
        if(ctype_digit($parentId) || $parentId === null) {
            $this->_parentId = $parentId;
        }
else {
            throw new Exception('ParentId is neither a digit nor NULL.');
        }
    }

    
    public function setIsHome($isHome) {
        if($isHome == 0 || $isHome == 1) {
            $this->_isHome = $isHome;
        }
else {
            throw new Exception('IsHome is not 0 or 1.');
        }
    }

    
    public function getId() {
        return $this->_id;
    }

    
    public function getTitle() {
        return $this->_title;
    }

    
    public function getContent() {
        return $this->_content;
    }

    
    public function getParentId() {
        return $this->_parentId;
    }

    
    public function getIsHome() {
        return $this->_isHome;
    }
}


class Page_Controller {
    private $_page;
    
    public function __construct(Page $page) {
        $this->_page = $page;
        $this->_db   = new Database();
    }

    
    public function new() {
        $query = "
        INSERT INTO
            pages
            (
                title,
                content,
                parent_id,
                is_home
            )
        VALUES
            (
                :title,
                :content,
                :parentId,
                :isHome
            )
        "
;
        $stmt = DB::prepare($query);
        $stmt->bindParam(':title', $this->_page->getTitle(), PDO::PARAM_STR);
        $stmt->bindParam(':content', $this->_page->getContent(), PDO::PARAM_STR);
        $stmt->bindParam(':parentId', $this->_page->getParentId(), PDO::PARAM_STR);
        $stmt->bindParam(':isHome', $this->_page->getIsHome(), PDO::PARAM_STR);
        $stmt->execute();
    }

    
    public function edit() {
        $query = "
        UPDATE
            pages
        SET
            title        = :title
            content        = :content
            parent_id    = :parentId
            is_home        = :isHome
        WHERE
            id         = :id
        "
;
        $stmt = DB::prepare($query);
        $stmt->bindParam(':title', $this->_page->getTitle(), PDO::PARAM_STR);
        $stmt->bindParam(':content', $this->_page->getContent(), PDO::PARAM_STR);
        $stmt->bindParam(':parentId', $this->_page->getParentId(), PDO::PARAM_STR);
        $stmt->bindParam(':isHome', $this->_page->getIsHome(), PDO::PARAM_STR);
        $stmt->bindParam(':id', $this->_page->getId(), PDO::PARAM_STR);
        $stmt->execute();
    }

    
    public function delete() {
        DB::exec("DELETE FROM pages WHERE id = '" . $this->_page->getId() . "'");
    }

    
    public function getData() {
        return DB:query("SELECT * FROM pages WHERE id = '" . $this->_page->getId() . "'");
    }
}


/**
* USAGE
*/


try {
    /* create a page */
    $page = new Page();
    $page->setTitle('Sub pagina');
    $page->setContent('Lorum ipsum..');
    $page->setParentId(1);
    $page->setIsHome(0);
    
    $pageController = new Page_Controller($page);
    $pageController->new();
    
    /* edit a page */
    $page = new Page();
    $page->setId(1);
    $page->setTitle('Hoofd pagina');
    $page->setContent('Lipsum lorum pipsum..');
    $page->setParentId(null);
    $page->setIsHome(1);
    
    $pageController = new Page_Controller($page);
    $pageController->edit();
    
    /* delete a page */
    $page = new Page();
    $page->setId(1);
    
    $pageController = new Page_Controller($page);
    $pageController->delete();
    
    /* get data of a page */
    $page = new Page();
    $page->setId(1);
    
    $pageController = new Page_Controller($page);
    print_r($pageController->getData());
    
}
catch (Exception $e) {
    echo 'Caught exception: '. $e->getMessage() ."\n";
}


?>

En zou jij misschien een voorbeeld (in de vorm van code (A)) kunnen geven van hoe jij dat ziet met dat deletePageById() verhaal icm de Page klasse?

Groet en bij voorbaat dank,
Boris

edit: prepared statements toegevoegd
Gewijzigd op 01/01/1970 01:00:00 door Boris Mattijssen
 
Jelmer -

Jelmer -

31/12/2009 15:29:00
Quote Anchor link
Waarom is de page_controller gebonden aan één enkele page?

Waarom gebruik je DB::prepare? Wat is dan het verschil met mysql_query, en welk punt van Blanche mis je hier nu? edit: ooh, ik zie dat Blanche een ander punt maakt. In ieder geval: het is vaak onhandig om één databaseverbinding in je hele applicatie te hebben. Soms is het zo dat je gebruikers uit een andere database wilt hebben dan pagina's, en dan heb je met zo'n static DB::prepare() aanroep een probleem. Andere situaties zouden kunnen zijn dat je naar een andere db schrijft dan dat je leest, of dat je een verbinding in een transactie hebt zitten en toch andere dingen direct wilt opslaan, en dus een tweede verbinding nodig hebt. En natuurlijk het principe. Een static aanroep is niets anders dan een functie-aanroep, en is niet een goed voorbeeld van Object Georiënteerd programmeren.

Ik zou het meer zoeken in de richting van
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
<?php
class Page_Controller
{
    protected $db;
    
    public function __construct(PDO $pdo)
    {

        $this->db = $pdo;
    }

    
    public function insert(Page $page)
    {

        $stmt = $this->db->prepare("UPDATE pages ....");
    }

    
    public function delete(Page $page)
    {

        $stmt = $this->db->prepare("UPDATE pages ....");
    }
}


$controller = new Page_Controller(new PDO('...'));

$home = new Page();
$controller->insert($home);

$about = new Page();
$controller->insert($about);
?>
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Boris Mattijssen

Boris Mattijssen

31/12/2009 16:53:00
Quote Anchor link
Beste Jelmer,

Bedankt voor je reactie!
Inderdaad een goeie opmerking over die Database en Page!
Heb het aangepast.

Code staat nu hier:
http://www.codedump.be/code/482/
Werd een beetje te lang voor op het forum vond ik..

Ik heb nu een klasse Database die PDO extend, ik weet dat dit niet helemaal juist is, maar het biedt wel vele mogelijkheden. (bijvoorbeeld de functies insert, update etc..)

Groetjes,
Boris
 
Jelmer -

Jelmer -

31/12/2009 17:13:00
Quote Anchor link
PDO extenden is prima hoor :)

Volgens mij is je code nu prima. Niets meer op aan te merken :D

(werkt dat trouwens? new als functienaam? Volgens mij krijg je dan iets met unexpected keyword parse error)
 
Boris Mattijssen

Boris Mattijssen

31/12/2009 17:34:00
Quote Anchor link
Mooi ! :D

Of het werkt weet ik niet, heb nog helemaal niks ervan getest ;)
Was gewoon om ff te kijken hoe en wat ;)

Nog ff een vraagje, gebruiken jullie vaak "get" methods bijv:
$page->getId();
of doe je gewoon:
$page->id;

Groet,
 
Jelmer -

Jelmer -

31/12/2009 22:00:00
Quote Anchor link
Omdat ik het toch wel erg handig vind om functies te hebben bij het uitlezen van variabelen gebruik ik wel getters, maar omdat ze zo gewoon zijn maak ik ze niet gebiedende-wijs. Dus $page->id().

De logica erachter is alles wat gebiedende wijs is past $page aan, alles wat meer alleen een naam is, of als een vraag gelezen kan worden, verandert niets aan m'n $page object. Bijvoorbeeld if($page->id() == 24) en if($page->isHidden()) is duidelijk read-only. $page->makeDefault(), $page->setId(), $page->validate() zijn methods die $page aan kunnen passen. ($page->isValid() weer niet, en zo is er voor iedere gebiedende wijs ook wel een vragende vorm te verzinnen)
 



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.