[check] OOP Page class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Randstad B.V.- Freelance Senior Fullstack Develope

Startdatum: 01.05.2023 Richttarief: € 75,00 - €85,00 Duur van de opdracht: 1 jaar Uren per week: 40 Werkmodel: Hybride, dinsdag en donderdag aanwezig op kantoor in Diemen en meer wanneer dit nodig is. Functieomschrijving: De ideale kandidaat gaat onderdeel uitmaken van een junior team binnen het foundation domein. Vanuit het foundation domein werkt dit team samen met andere foundation teams en teams uit het online domein (professionals B2B en B2C) voor het bouwen en integreren van HRM functionaliteiten (verlof en benefits) in de persoonlijke portal van Interim Professionals. Er is meer backend werk dan frontend, maar kandidaat moet beiden leuk

Bekijk vacature »

.NET Developer C# VB

Samengevat: Deze werkgever is actief in software voor het matchen van vraag en aanbod van gebruikte auto-onderdelen. Ben jij een .NET Developer? Heb je ervaring met het ontwikkelen (REST) en integreren van webservices? Vaste baan: C# .NET Developer C# VB HBO €2.600 - €6.200 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. De branche van dit bedrijf is Automotive. Functie: Voor de vacature als .NET Developer Dordrecht HBO ga je

Bekijk vacature »

SAP ABAP Developer

Dit ga je doen Software ontwikkeling met behulp van o.a. ABAP, Sapscript en Smartforms Maatwerk development op SAP ECC 6.0, in de toekomst S/4 HANA Samenwerken met Business Analisten die functioneel en technisch ontwerpen aanleveren Testen van opgeleverde software Bugfixing Ondersteuning van eindgebruikers Hier ga je werken Onze klant, een internationaal gevestigd productiebedrijf dat mensen blij maakt, is ter versterking op zoek naar een ABAP Developer voor hun SAP team. Het team van 4 mensen verzorgt de ontwikkeling van maatwerk voor de SAP omgeving waar wordt gewerkt met modules SD, FI/CO, PM en MM. Momenteel draait het bedrijf op SAP

Bekijk vacature »

C# Developer

Dit ga je doen Je gaat aan de slag in het websites team of portals team waarin je je bezighoudt met concept & design, implementatie en ook een stukje bugfixing en onderhoud; Je werkt met je team volgens de Scrum werkwijze; Zo adviseer je ook de PO & Scrum Master over de technische architectuur, koppelingen en integratie met externe systemen en API’s; Je blijft op de hoogte van de laatste ontwikkelingen en trends op het gebied van C# / .NET en deelt deze kennis binnen de organisatie. Hier ga je werken Onze klant is een internationale organisatie gevestigd in de

Bekijk vacature »

Delphi developer

Functie Als Delphi developer ga jij aan de slag in een team met twee andere ervaren Delphi programmeurs waaronder de Hoofd programmeur. Als team zijn jullie verantwoordelijk voor de doorontwikkeling van jullie bestaande applicatie. Daarnaast zijn jullie verantwoordelijk voor het onderhouden van deze applicatie en het oplossen van eventuele bugs. Eisen - HBO werk en denk niveau; - Minimaal één jaar ervaring met Delphi; - Goede beheersing van de Nederlandse taal in woord en geschrift; - Jij bent zelfstandig, maar kan ook in team verband werken. Aanbod - €3000,-- €4000,- op basis van jouw kennis en ervaring; - 8% vakantiegeld;

Bekijk vacature »

Full stack developer Python, React

Functie Jij als full stack developer komt binnen onze Technology afdeling te werken. Deze bestaat momenteel uit 15 man. De stack waarmee wij werken is voornamelijk Python, Javascript, React en GraphQL. Binnen deze afdeling wordt er met multidisciplinaire teams gewerkt aan verschillende projecten. Projecten duren vaak langer dan 3 maanden en je bent van begin tot eind vaak betrokken. Naast dat je als full stack ontwikkelaar aan de slag gaat ben je ook Consultant. Dit betekent dat je ook klantcontact hebt in je rol en werkshops geeft. De verhouding tussen deze werkzaamheden zijn ongeveer 70% development en 30% consultancy. Een

Bekijk vacature »

PHP Software Developer

Functie omschrijving Op zoek naar een nieuwe uitdaging binnen PHP? Lees dan snel verder! Wij zoeken een ervaren PHP developer die binnen een organisatie gaat functioneren als verlengstuk van de klant. Wij zoeken voor deze iemand die technisch complexe zaken met enthousiasme en plezier aanvliegt. Verder moet je instaat zijn om je tijd goed te managen omdat je aan meerdere projecten tegelijkertijd werkt. Je werkt met de nieuwste technieken en tijdens deze uitdaging werk je veel samen met de front-end developers van deze organisatie. Wij zoeken iemand die zichzelf graag uitdaagt en altijd de beste wilt zijn. Bedrijfsprofiel Waar ga

Bekijk vacature »

Java Programmeur

Functie Heb jij altijd al samen willen werken met ervaren java ontwikkelaars dan hebben wij hier de ultieme kans voor jou! Voor een opdrachtgever in omgeving van Naaldwijk zijn wij op zoek naar uitbreiding van het vaste ontwikkel team. Je zult je hier voornamelijk bezig gaan houden met; Wijzigingsverzoeken van klanten uitvoeren, hier wordt je diep in betrokken; Samen met consultants sluit je aan bij gesprekken met klanten, voor alle projecten; Je schakelt veel met consultants, wat is de behoefte van de klant? Hoe kan je hierop integreren?; Het framework moet naar de Cloud gebracht worden, je wordt betrokken bij

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je hier

Bekijk vacature »

.NET developer

Functie Als developer heb jij de keuze om aan te sluiten bij het team (13 developers) die op locatie projectmatig bij klanten werkt. Wanneer jij liever intern bij de werkgever werkt is er ook alle ruimte voor jou in het interne team (8 developers) van dit bedrijf. Je werkt samen aan verschillende projecten bij of voor de klant. Het project wordt aangeleverd door sales aan de project manager. Die maakt samen met de Resourcer een planning en op basis daarvan wordt uit het development team een “projectgroep” opgesteld. Hoeveel en welke projecten jij wilt oppakken gebeurt geheel in samenspraak met

Bekijk vacature »

.NET Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een .NET Developer! Wil jij werken voor een internationaal bedrijf waar je legio mogelijkheden krijgt als Software Ontwikkelaar? Grijp nu je kans en kijk snel of jouw vaardigheden aansluiten bij onderstaand profiel! Je kunt een uitdagende rol gaan vervullen als .NET Developer binnen een internationaal bedrijf dat gevestigd is in omgeving Bergen. Dit bedrijf is zeer vooruitstrevend en verricht betekenisvol werk. Binnen dit bedrijf wordt gewerkt aan de productie en ontwikkeling van medische middelen. Als .NET Developer ga jij je bezig houden met het volgende: Je wordt betrokken bij alle fasen van software

Bekijk vacature »

Back-end Developer Java

Dit ga je doen Het (door)ontwikkelen van een zelfgebouwde applicatie in Java, Spring Framework, SQL, HTML, CSS en Javascript; End-to-end beheer m.b.t. de applicatie en koppelen van applicaties binnen het landschap; Ontwikkelen van rapportages voor de interne organisatie; Ontwikkelen van aanvullende functionaliteiten m.b.t. de applicatie; Uitvoeren van testen en code reviews. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die medische gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen en verbeteren van de kwaliteit van de zorg in heel Nederland.

Bekijk vacature »

Full stack developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Senior Front-End Developer

Als Senior Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Senior Front-End Developer bij Coolblue? Als Senior Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Senior Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Nadenken

Bekijk vacature »

Medior/Senior Front-end Developers gezocht (Utrech

Functie Het team bestaat uit 10+ gespecialiseerde (veel senior) front-end ontwikkelaars en ontwerpers die werken aan projecten voor klanten van verschillende groottes (kan twee jaar bezig zijn met 1 klant). Je helpt klanten met ingewikkelde front-end vraagstukken, hierbij kun je denken aan: UX/UI design, CI/CD, architectuur en integratie met back-end systemen. De werkzaamheden verricht je op locatie bij de klant, dit is vaak in de Randstad. De organisatiestructuur is plat en er heerst een informele sfeer, zo kun je met vragen dus terecht bij de directie. Er wordt veel nadruk gelegd op het bevorderen van persoonlijke ontwikkeling door middel van

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

08/05/2024 02:50:51
 
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.