BlogSysteempje maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET developer

Functie Als ervaren .NET ontwikkelaar ontbreekt er aan passie en motivatie niks. Jij bent communicatief sterk en pakt iedere uitdaging dan ook met beide handen aan. Op projectbasis ga jij met je team of met enkele andere ontwikkelaars intern aan de slag bij diverse partners. Op basis van het project ga jij aan de slag en zijn de werkzaamheden en technieken erg divers. Jouw werkgever stelt jouw ontwikkeling hierin voorop, zo krijg je een vast vertrouwenspersoon die één keer in de maand op locatie van jouw project zal kijken hoe het gaat en of er eventuele aandachtspunten zijn. Daarnaast krijg

Bekijk vacature »

Medior PHP Developer

Bij Getnoticed doen wij wat we leuk vinden, websites bouwen en online marketing. Voor veel van onze klanten doen we dan ook allebei. Wel zo fijn om campagnes te draaien voor conversiegerichte website die in eigen beheer zijn. In onze vestiging in Nederweert zitten onze development afdelingen en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé PHP/Back-end developer die net als wij, het hoofd boven het maaiveld durft uit te steken! In het kort Even een paar punten die omschrijven wat deze toffe baan inhoudt: Het bedenken van nieuwe functionaliteiten Het verbeteren van het

Bekijk vacature »

PHP developer (Laravel/Vue.js)

Functie Het team telt momenteel 20 collega’s, bestaande uit developers (front- en backend) en het operations team, waaronder ook het management en twee scrum masters vallen. Ze zijn op zoek naar een PHP developer die in staat is zelfstandig te werken. Je komt te werken in één van de drie scrumteams en gaat aan de slag met een project voor de klant. Het fijne hieraan is dat je wel afwisseling hebt qua werk, maar tegelijkertijd doorlopend werkt voor bestaande klanten. Hierdoor krijg je ook de kans om echt de diepte in te gaan en innovatieve technische oplossingen neer te zetten.

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Oracle Apex developer

Bedrijfsomschrijving My client is a technology company based in Den Bosch, the Netherlands. They specialize in providing innovative software solutions to clients, and they are currently looking for an experienced Oracle Apex developer to join the IT team. Functieomschrijving As an Oracle Apex developer, you will be responsible for designing, developing, and maintaining web-based applications using Oracle Apex. You will work closely with project managers, business analysts, and other developers to ensure that clients' needs are met and that the software solutions are of the highest quality. Responsibilities: Design, develop, and maintain Oracle Apex applications. Work with project managers and

Bekijk vacature »

.NET Developer Microservices

Dit ga je doen Je taken zullen voornamelijk bestaan uit: Het ontwikkelen van software, inclusief vormgeving, implementaties, integraties en (automatisch) testen (.NET, C#, Azure, Docker, Microservices, Angular); Het in kaart brengen van software requirements; Zorgen dat jouw code kwalitatief hoogstaand is; Het uitvoeren van risico analyses; Een bijdrage leveren aan het continuous quality improvement process. Hier ga je werken Dat kanker een verschrikkelijke ziekte is die de wereld uit geholpen moet worden, is duidelijk. Binnen deze Gelderse organisatie die duizenden ziekenhuizen van producten voorziet, proberen ze daar via technische innovaties aan bij te dragen. Samen met 10 collega .NET developers

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Medior/senior Front-end developer

Functie Je maakt deel uit van een DevOps Scrum team en werkt samen met back-end developers, test-engineers, interaction designers en een projectmanager. Er zijn verschillende groepen Scrum teams. Een roadmap team is jouw ‘’thuisbasis’’, daar wordt gewerkt aan doorontwikkeling van bestaande omgevingen voor een aantal klanten. Hiernaast zijn er projectteams waar nieuwe omgevingen worden gebouwd, of grote complexe wijzigingen worden doorgevoerd op bestaande omgevingen. Je kunt (afhankelijk van jouw wensen en doelen) dus afwisselend werken in beide teams. Hiernaast participeer je in het Chapter Front-end development waar gezamenlijk kennis en ervaring wordt gedeeld. Als Front-end developer is het jouw doel

Bekijk vacature »

Java Full Stack Developer

Java Full Stack developer What makes Cognizant a unique place to work? The combination of rapid growth and an international and innovative environment! This is creating a lot of opportunities for people like YOU — people with an entrepreneurial spirit who want to make a difference in this world. At Cognizant, together with your colleagues from all around the world, you will collaborate on creating solutions for the world's leading companies and help them become more flexible, more innovative and successful. And this is your chance to be part of the success story: we are looking for a (Senior) Java

Bekijk vacature »

SAP Integratie Ontwikkelaar

Ben jij ambitieus in de verdere ontwikkeling van SAP binnen HANOS, en heb je kennis van SAP PI, CPI (SAP integration suite) en of andere middleware tooling? Dan ben jij mogelijk onze nieuwe SAP Integratie (middleware) Ontwikkelaar! Lees snel verder en solliciteer! Wat ga je doen? Als SAP Financieel Consultant ben je, als deel van een gedreven team van interne SAP consultants, de schakel tussen de gebruikersorganisatie en ICT. Je draagt proactief bij aan een optimale aansluiting van de SAP-functionaliteit (een applicatielandschap met o.a. Suite on HANA, Fiori, Hybris, C4C en BO), op de bedrijfsprocessen. Verder ondersteun je de HANOS

Bekijk vacature »

Junior .NET Developer

Dit ga je doen Ontwikkelprocessen verder optimaliseren en verder ontwikkelen met C#; CI/CD-pipelines automatiseren; Ontwikkelen van herbruikbare componenten; Front-end pagina's gebruiksvriendelijk maken. Hier ga je werken Als junior .NET Developer kom je terecht binnen een grote en internationale organisatie. Zij streven naar een positieve impact op de mens, milieu en maatschappij. Het bedrijf is oorspronkelijk een familiebedrijf en werkt aan de productie van hoogwaardige en technische systemen voor de gezondheidszorg. Momenteel willen zij betere ontwikkelprocessen creëren op internationaal gebied en staat kwaliteit en veiligheid voor hun op nummer 1! Als junior .NET Developer werk je aan het ontwikkelen van verbeterde

Bekijk vacature »

Product Developer (M/F), Fulltime 40 h/week

A global Plantbased revolution – that is our dream. Maximising the protein transition – that is our mission. Producing and developing sustainable and delicious products – that is what we do. Ojah is a fast growing company with a mission and has the ambition to be the world leader in its field. To support this growth we are hiring new colleagues. People that would like to make a difference and dare to dream big. With currently a 150 colleagues proudly working on our exceptional products. Working in a dynamic surrounding that runs full speed ahead. We need you! Product Developer

Bekijk vacature »

Lead Webdeveloper

As Lead Web Developer at KUBUS you are responsible for the implementation design of requirements and the software architecture of the web application and services of BIMcollab. In your role as lead developer you will naturally search for the optimum between the required implementation time, the performance of the application and a fast go-to-market of features, in line with our automated test and release train. Together with the other senior developers in your team you monitor the architecture of the application and you advise the product owner about necessary refactoring to improve the maintainability of the platform. Our development team

Bekijk vacature »

Applicatieontwikkelaar Java EE

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving De afdeling IV –

Bekijk vacature »

Front-end Developer

Gezellige team, passie en een groene toekomst! Lees hier de vacature van Front-end Developer bij All in Power! All in power heeft zich tot doel gesteld écht bij te dragen aan de energietransitie. Dit doen wij door de markt voor energie volledig op zijn kop te zetten. Producenten van schone (wind- of zonne-)energie verkopen via ons platform hun energie rechtstreeks aan gebruikers. Of dit nu huishoudens, bedrijven of bijvoorbeeld laadpalen zijn ons platform maakt het uitwisselen van energie mogelijk. Zo maken we de business case van onze klanten veel sterker en loont het om (meer) te investeren in vergroening voor

Bekijk vacature »
Manaus

Manaus

07/08/2008 17:07:00
Quote Anchor link
Beste php'ers,

Ik ga beginnen met het maken van blogsysteempje.
Maar omdat ik mijn oop eens wil testen zal ik dat maken dmv oop.
Hierbij is mijn vraag, wat voor classen ga ik moeten aanmaken?
Ik wil niet dat het gwn allemaal classen zijn maar dat ze ook effectief samen werken zoals dat hoort bij oop.
Iemand tips?

mvg, Manaus
Gewijzigd op 01/01/1970 01:00:00 door Manaus
 
PHP hulp

PHP hulp

08/09/2024 19:10:34
 
Jacco Engel

Jacco Engel

07/08/2008 17:10:00
Quote Anchor link
Beginnen bij het begin?

Begin met het maken van een lijst wat je systeem meot kunnen
 
Michel W

Michel W

07/08/2008 17:15:00
Quote Anchor link
en dan mooie schema's gaan teken in UML :)
 
Citroen Anoniem Graag

Citroen Anoniem Graag

07/08/2008 17:16:00
Quote Anchor link
Begin met pen en papier, schrijf op wat het systeem moet kunnen.

Als je dat hebt gedaan ga je kijken welke objecten er nodig zijn (zie nieuwe tutorial: object geörienteerd denken).

De volgende stap is welke methods (functies) bij welk object horen. En wat de eigenschappen van elke object moeten zijn. (Standaard dingen zoals een pdo object kun je hier voor het overzicht nog even weg laten).

Als het goed is heb je nu een lijstje met alle classes die je moet gebruiken, met de methods en properties. Vaak blijkt dat je een paar functies bent vergeten, voeg die dan direct toe!.
Nu ga je kijken naar de visabilty van de methods en properties (public, protected of private).

Nu kan je beginnen met het uitprogrammeren van de classes en gaan testen.

Als je niet zeker weet of je het goed heb gedaan vraag je hier ff om kritiek over je opzet.

Succes!
Gewijzigd op 01/01/1970 01:00:00 door Citroen Anoniem Graag
 
Manaus

Manaus

07/08/2008 17:20:00
Quote Anchor link
Bedankt voor jullie snelle reacties, ik zal zo meteen beginnen met een lijstje te maken.
Als ik klaar ben met mijn systeempje zal ik zeker hier posten om kritiek en wat beter kan.

Edit:
Ik ben begonnen met men lijstje, zoveel moet de blog niet kunnen natuurlijk.
Hieronder vind je mijn lijstje, is dit een goeie manier?


- een blog maken
-> blog maken
-> blog ophalen
-> blog aanpassen
-> blog verwijderen

- reacties
-> reactie maken
-> reactie opmaken
-> reactie aanpassen (kijken voor de juiste rechten)
-> reactie verwijderen (kijken voor de juiste rechten)
- admin functie
-> blog maken
-> blog verwijderen
-> blog aanpassen
-> inloggen
-> uitloggen

mvg, Manaus
Gewijzigd op 01/01/1970 01:00:00 door Manaus
 
Michel W

Michel W

07/08/2008 18:11:00
Quote Anchor link
manaus:
-> inloggen
-> uitloggen

Misschien nog wat extra dingen:
Wachtwoord genereren (voor zowel opvragen als registreren handig)

Activeren (naja kun je ook nog wachtwoord genereren voor gebruiken om als activatie code te dienen)

Wachtwoord opvragen via email / gebruikersnaam

(her)activeren, stel dat iemand zijn wachtwoord via email/gebruikersnaam opvraagt dat hij/zij een link in de email krijgt met daarin een link die een nieuw wachtwoord genereert en die opstuurt. Dit voorkomt misbruik van die functie. (leuk om mensen mee te "klieren")

Ban/Straf functie? Je zou misschien aan posts een reactie meter kunnen hangen. Is de post leuk/grappig etc. dat andere kunnen stemmen op die reactie. Zo kun je punten weg "punishen" bij ongewenst gedrag

Gewoon een edit profile: misschien dat ze kunnen kiezen uit meerdere templates? Wachtwoord wijzigen, email wijzigen etc.
Gewijzigd op 01/01/1970 01:00:00 door Michel W
 
Douwe

Douwe

07/08/2008 18:13:00
Quote Anchor link
Dreampower;
In- en Uitloggen is voor de admin, dus al die functies die je zegt hoeven niet ;)
Bannen is wel een goed idee.
 
Michel W

Michel W

07/08/2008 18:18:00
Quote Anchor link
douwe m:
-> reactie maken
-> reactie opmaken
-> reactie aanpassen (kijken voor de juiste rechten)
-> reactie verwijderen (kijken voor de juiste rechten)
Ik zou niet willen dat iemand anders reacties zou kunnen maken onder mijn naam ^^

Owja ik ben iemand die soms wat over creatief kan zijn met zijn ideeen ^^
Gewijzigd op 01/01/1970 01:00:00 door Michel W
 
Manaus

Manaus

07/08/2008 19:13:00
Quote Anchor link
voila, ik heb nu een db class gemaakt samen met de admin...
Denken jullie dat ik goed bezig ben of totaal niet?:
Gewijzigd op 01/01/1970 01:00:00 door Manaus
 
Jelmer -

Jelmer -

08/08/2008 11:52:00
Quote Anchor link
Misschien moet je die tutorial van PHPErik nog een keertje doorlezen, en het loont om een keer te kijken naar hoe bijvoorbeeld MySQLi en PDO zijn opgebouwd.

Als je daar naar kijkt zal het je opvallen dat PDO bij PDO::query() niet een pointer meegeeft die je bij andere functies kan gebruiken, maar een object, PDO_Statement, waar je direct je methods op aan kan roepen. De resultaten worden behandeld als een object, als een op zichzelf staand ding. Jij behandeld ze eerder als een notitie die je doorgeeft aan je andere methods. Je doet eigenlijk precies fout wat iedereen die begint met OOP fout doet: je maakt van klassen setjes functies. Je geeft het zelf ook nog eens aan doordat je constant "static" & self gebruikt.


Maar als je nu eerst even de details - hoe je met de database gaat praten - buiten beschouwing laat: Hoe ga je je blog indelen? Voor welk ding maak je een object, en waar komen de methods die de blog-posts ophalen en de reacties erbij zoeken?
 
Jacco Engel

Jacco Engel

08/08/2008 12:18:00
Quote Anchor link
- een blog maken
-> blog maken
-> blog ophalen
-> blog aanpassen
-> blog verwijderen

- admin functie extends blog maken
-> inloggen
-> uitloggen

Denk dat het zo iets handiger is :) classes zijn om dubbel werk te voorkomen
 
Manaus

Manaus

08/08/2008 12:25:00
Quote Anchor link
Ok, ik ben nog wat verder, ik heb database enzo aangepast.
Ben ik nu goed bezig ofniet?

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
<?php

/**
 * @author
 * @copyright 2008
 */


class reactie{
    private $id;
    private $author;
    private $title;
    private $content;
    private $blog;
    private $datum;
    private $ip;
    private $db;
    public function __construct(db $db, $id){
        $this->db = $db;
        $this->id = $id;
    }

    public function load(){
        $query = $this->db->query("SELECT title, content, datum, ip, author, blog, bewerkdatum, bewerkt FROM reacties
                            WHERE id = "
.$this->db->quote($this->db));
        if($this->db->totaal($query) > 0){
            $row = $this->db->fetch($query);
            $this->author     = $row['author'];
            $this->title     = $row['title'];
            $this->content     = $row['content'];
            $this->datum     = $row['datum'];
            $this->ip         = $row['ip'];
            $this->blog        = $row['blog'];
        }
    
        else{
            throw new Exception("Reactie niet gevonden in database!");
        }                
    }

    public function edit($title, $content){
        $query = $this->db->query("UPDATE reacties SET
                        content = "
.$this->db->quote($content).",
                        title = "
.$this->db->quote($title).",
                        bewerkdatum = NOW(),
                        bewerkt = '1'
                        WHERE id = "
.$this->db->quote($this->id)."
                        "
);

    }

    public function delete(){
        $query = $this->db->query("DELETE FROM reacties WHERE id = ".$this->db->quote($id));        
    }

    public function ban(){
        $this->db->query("INSERT INTO ban SET (datum, reden, ip) VALUES
        (NOW(), "
.$this->db->quote($reden).", ".$this->db->quote($this->ip).")
        "
);
    }
}

class reacties{
    private $reacties = array();
    private $db;
    public function __construct(db $db){
        $this->db = $db;
    }

    public function load($id){
        unset($this->reacties);
        $reactie = new reactie($this->db, $id);
        $reactie->load();
        $this->reacties[] = $reactie;
    }

    public function loadmore($blog_id){
        unset($this->reacties);
        $query = $this->db->query("SELECT id FROM reacties WHERE blog = ".$this->db->quote($blog_id));
        while($row = $this->db->fetch($query)){
            $reactie = new reactie($this->db, $row['id']);
            $reactie->load();
            $this->reacties[] = $reactie;
        }
    }

    public function edit($id, $title, $content){
        if(admin::ingelogd){
            $reactie = new reactie($this->db, $id);
            $reactie->edit($title, $content);
        }

        else{
            throw new Exception("Je bent niet ingelogd als admin!");
        }
    }

    public function delete($id){
        if(admin::ingelogd){
            $reactie = new reactie($this->db, $id);
            $reactie->delete();
        }
else{
            throw new Exception("Je bent niet ingelogd als admin!");
        }
    }
    
}


?>


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
<?php

/**
 * @author
 * @copyright 2008
 */


class db{
    private $connected;
    public  $queries = 0;
    public function connect($host, $username, $password, $db){
        if($this->connected == NULL){
            if($connection = mysqli($host, $username, $password, $db)){
                self::$connected = $connection;
            }

            else{
                throw new Exception("Er kon geen database verbinding gemaakt worden!");
            }
        }
    
        else{
            
        }
    }

    public function query($sql){
        if($this->connected == NULL){
            throw new Exception("Er is nog geen database verbinding gemaakt!");
        }
else{
            $query = mysqli_query($this->connected,$sql);
            if($query){
                $this->queries++;
                return $query;
            }

            else{
                throw new Exception(mysqli_error());    
            }
        }
    
    }

    public function fetch($query){
        return mysqli_fetch_assoc($query);
    }

    public function totaal($query){
        return mysqli_num_rows($query);
    }

    public function quote($string){
        return "'".mysqli_real_escape_string($string)."'";
    }
}
    

?>


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
<?php

/**
 * @author
 * @copyright 2008
 */


class admin{
    public static $ingelogd;
    private $username;
    private $password;
    private $db;
    public function __construct(db $db){
        $this->check_ingelogd();
        $this->loadinfo();
        $this->db = $db;
    }

    public function loadinfo(){
        $query = $this->db->query("SELECT password, username FROM instellingen WHERE id = '1'");
        $row = $this->db->fetch($query);
        $this->username = $row['username'];
        $this->password = $row['password'];
        
    }

    public function check_ingelogd(){
        if(isset($_SESSION['ingelogd'])){
            self::$ingelogd = TRUE;
        }

        else{
            self::$ingelogd = FALSE;
        }
    }

    public function login($username, $password){
        if($username == $this->$username && sha1($password) == $this->$password){
            self::$ingelogd = TRUE;
            $_SESSION['ingelogd'] = 1;
        }

        else{
            self::$ingelogd = FALSE;
        }
    }
    
}


?>


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
<?php

/**
 * @author
 * @copyright 2008
 */


class blog{
    private $id;
    private $title;
    private $content;
    private $datum;
    private $db;
    public function __construct(db $db, $id){
        $this->id = $id;
        $this->db = $db;
    }

    public function load(){
        $query = $this->db->query("SELECT title, content, datum, bewerkt, bewerkdatum
                            FROM blogs
                            WHERE id = "
. $this->db->escape($this->id) ."
                            "
);
        if($this->db->totaal($query) > 0){
            $row = $this->db->fetch($query);
            $this->title = $row['title'];
            $this->content = $row['content'];
            $this->datum = $row['datum'];
        }
    
        else{
            throw new Exception("Blog bestaat niet!");
        }                
        
    }

    public function edit($title, $content){
        $this->db->query("UPDATE blogs
                    SET title = "
.$this->db->escape($title).",
                    content = "
.$this->db->escape($content).",
                    bewerkt = '1',
                    bewerkdatum = NOW()
                    WHERE id = "
.$this->db->escape($this->id)."
                    "
);
        return TRUE;            
    }

    public function delete(){
        $this->db->query("DELETE FROM blogs WHERE id = '".$this->db->escape($this->id)."' LIMIT 0,1");
        return TRUE;
    }
    
    
}

class blogs{
    private $blogs = array();
    private $db;
    public function __construct(db $db){
        $this->db = $db;
    }

    public function load($id){
        unset($this->blogs);
        $blog = new blog($id);
        $blog->load();
        $blogs[] = $blog;
        
    }

    public function load_more($where){
        unset($this->blogs);
        $query = $this->db->query("SELECT id FROM blogs WHERE ".$where);
        while($row = $this->db->fetch($query)){
            $blog = new blog($this->db, $row['id']);
            $blog->load();
            $blogs[] = $blog;
        }
    }

    public function edit($id, $title, $content){
        $blog = new blog($this->db, $id);
        $blog->edit($title, $content);
    }

    public function delete($id, $title, $content){
        $blog = new blog($this->db, $id);
        $blog->delete();
    }

    public function load_reacties($id){
        
    }
}


?>
Gewijzigd op 01/01/1970 01:00:00 door Manaus
 
Jelmer -

Jelmer -

08/08/2008 12:48:00
Quote Anchor link
Het komt al een beetje in de buurt, maar je bent er nog niet helemaal. Vind je het zelf ook niet een beetje vreemd dat je blog::delete & blogs::delete hebt, die beiden hetzelfde doen? En dat je in blog & in blogs queries hebt staan?

Zelf probeer ik altijd een model te maken, een blogpost (jij noemt het een blog, ook goed) en een klasse die die blogs beheert. Ik maak deze dan verantwoordelijk voor het opslaan, ophalen, sorteren, terugvinden en whatever er met die blogs gebeurt, de blog zelf is alleen verantwoordelijk voor zijn eigen inhoud en dat deze klopt en hoeft zich niet druk te maken over opslag en escapen van data.

Voorbeeldje van hoe ik het zou doen:
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
<?php

class Blog {
    
    static public function loadFromArray(array $data) {
        $blog = new self();
        $blog->id = $data['id'];
        $blog->title = $data['title'];
        $blog->content = $data['content'];
        $blog->datum = $data['datum'];
        return $blog;
    }

    
    protected $id;
    
    protected $title;
    
    protected $content;
    
    protected $datum;
    
    public function id() {
        return (int) $this->id;
    }

    
    public function title() {
        return (string) $this->title;
    }

    
    public function content() {
        return (string) $this->content;
    }

    
    public function datum() {
        return new DateTime($this->datum);
    }

    
    
    public function setTitle($title) {
        if(strlen(trim($title)) < 1) {
            throw new Exception('Titel is leeg. blog::$title moet minstens 1 karakter (geen spatie) lang zijn');
        }

        
        $this->title = $title;
    }

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

    
    public function setDatum(DateTime $datum) {
        $this->datum = $datum->format('Y-m-d H:i:s');
    }
    
}


class BlogStorage {
    
    protected $db;
    
    public function __construct(DB $db) {
        $this->db = $db;
    }

    
    public function getRecent($count = 5) {
        $result = $this->db->query(sprintf('SELECT ... FROM blogs ORDER BY datum DESC LIMIT %d', $count));
        
        $blogs = array();
        
        while($blog_data = mysql_fetch_assoc($result)) {
            $blogs[] = Blog::loadFromArray($blog_data);
        }

        
        return $blogs;
    }

    
    public function getBlogByID($id) {
        $result = $this->db->query(sprintf('SELECT ... FROM blogs WHERE id = %d', $id));
        
        return Blog::loadFromArray(mysql_fetch_assoc($result));
    }

    
    public function put(Blog $blog) {
        if($blog->id() !== 0) {
            $this->db->query('UPDATE...')
        }
else {
            $this->db->query('INSERT...');
        }
    }

    
    public function delete($id) {
        $this->db->query('DELETE...');
    }
}

?>


Blogposts ophalen gaat nu zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$db
= new DB(..);
$blog_storage = new BlogStorage($db);
$recent_blogs = $blog_storage->getRecent(10);

foreach($recent_blogs as $blog) {
    echo '<li>' . htmlentities($blog->title()) . '</li>';
}

?>


En een nieuwe post toevoegen ongeveer zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$db
= new DB(..);
$blog_storage = new BlogStorage($db);

$new_blog = new Blog();
$new_blog->setTitle($_POST['title']);
$new_blog->setContent($_POST['content']);
$new_blog->setDatum(new DateTime());
$blog_storage->put($new_blog);
?>


Zie je dat het nu wat logischer allemaal wordt? Je kan een Blog gebruiken om hem op te slaan in de database, maar je zou ook een BlogXMLStorage klasse kunnen maken die de blogs opslaat in XML in plaats van een database. De blog is nu niet meer direct gekoppeld aan de database waardoor je hem voor veel meer doeleinden kan gebruiken.

Het heeft ook wat meer weg van de werkelijke wereld. Je zegt niet tegen je papiertje "sla jezelf op!". Instead stop jij het papiertje in een map of prik je het op je prikbord. Jij blijft in controle, jij bepaald wat er gebeurt. Niet hoe het gebeurt (maakt jouw het uit hoe het mechanisme van een map werkt, of wat de formule van de kurk in je prikbord is) maar wat er gebeurt. Dat is niet aan je papiertje, aan je blog-object, om te weten. Met klassen is het bijna hetzelfde als met mensen. Hoe minder ze weten, hoe beter >:)
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Manaus

Manaus

08/08/2008 13:09:00
Quote Anchor link
Hartelijk bedankt!! Hier kan ik mee verder. Zeer duidelijk trouwens;)
 
- -

- -

13/08/2008 15:20:00
Quote Anchor link
Jelmer schreef op 08.08.2008 12:48:
Met klassen is het bijna hetzelfde als met mensen. Hoe minder ze weten, hoe beter >:)

Dan is het met jou niet zo goed gesteld: jij weet echt veels-te-veel af van OOP, dat wil ik ook!
 



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.