Verschil tussen OOP en nomaal PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Albert de Wit

Albert de Wit

22/02/2012 10:12:31
Quote Anchor link
Hey,

Ik heb een vraag over OOP en de normale scripting van php.

Wat kan OOP wel dat normale PHP niet kan?
Zijn er andere voordelen van OOP?

Zou iemand mij dit kunnen uitleggen?
Bij voorbaat dank,
 
PHP hulp

PHP hulp

17/01/2022 01:53:31
 
Dennis Sluijk

Dennis Sluijk

22/02/2012 10:19:09
Quote Anchor link
OOP is een manier van programmeren. OOP staat voor Object-oriented programming. Je kan in princiepen even veel met gewone spaghetti PHP als met OOP.

Met OOP kan je een klassen maken die je steeds weer kan herbruiken en dus niet steeds weer opnieuw hoeft te schrijven.
 
Albert de Wit

Albert de Wit

22/02/2012 10:19:46
Quote Anchor link
Ok dus in feite kan ik evenveel met spaghetti php als OOP?
 
Wouter J

Wouter J

22/02/2012 11:44:29
Quote Anchor link
Kijk je kan het zelfde, maar de manier van scripten in OOP maakt je script veel beter.

Als je alles object geörienteerd script lijkt het alsof je meer code schrijft, maar je kan dit soort dingen veel vaker gebruiken.
Bij OOP zorg je dat een functie (method in OO) of class maar een bepaalde controle heeft. Hiermee zorg je dat je script heel flexibel is en je het vaker kunt hergebruiken.

Als je bijv. ooit een OOP inlog systeem hebt gemaakt voor een Webshop en je moet nu een CMS maken voor een klant, dan kun je heel simpel de inlog classes uit de webshop halen en zo gebruiken in je nieuwe project.

Ook werk je een stuk beter. Want als je alles via classes doet denk je heel goed na over je code. Het voordeel daarvan is dat de logica veel beter in elkaar zit, je script er beter uit ziet en misschien zelfs sneller wordt.
 
Albert de Wit

Albert de Wit

22/02/2012 11:46:11
Quote Anchor link
Ok,

Dat word dus even OOP leren komende tijd.

Bedankt voor jullie nuttige informatie!!!

Groetjes,

Albert de Wit
 
Wouter J

Wouter J

22/02/2012 11:56:59
Quote Anchor link
Nog een voordeel:
Doordat OOP zo flexibel is kun je heel snel dingen aanpassen. Stel je voor dat je een CMS systeem in OOP hebt gemaakt op een MySQL database en je komt nu ineens in aanraking met een andere database type. Dan zal je in Flat PHP al je pagina's moeten doorzoeken en eigenlijk je hele scripting moeten aanpassen.
Omdat je in OOP classes de verantwoordelijkheid hebt gegeven om gegevens op te halen en andere classes om iets met die gegevens te doen wordt het een stuk makkelijker. Bijv:
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
class Page
{
  protected $title;
  protected $content;

  // contructor wordt aangeroepen bij het aanmaken van een class
  public function __construct( $data )
  {

    $this->title = $data['title'];
    $this->content = $data['content'];
  }

  public function getTitel()
  {

    return $this->title;
  }

  public function getContent()
  {

    return $this->content;
  }
}

// deze class handelt het ophalen van een pagina
class PageMapper
{
  protected $db;

  public function __construct( PDO $db )
  {

    $this->db = $db;
  }

  public static function getById( $id )
  {

    $sQuery = "SELECT title, content FROM pages WHERE id = ".(int) $id;
    $stmt = $this->db->prepare($sQuery);
    $stmt->execute();
    $data = $stmt->fetch(PDO::FETCH_ASSOC);

    return new Page( $data );
  }
}


$page = PageMapper::getById(12);
$page->getTitle(); // de titel
$page->getContent(); // de content
?>

Als je nu i.p.v. PDO MySQLi wilt gebruiken hoef je alleen de PageMapper class aan te passen. De Page class hoeft niet te weten hoe de gegevens worden opgehaald en dus kun je dit veel beter aanpassen.

Wat goede OOP tutorials:
- leer eerst OOP met de OOP beginnershandleiding
- ga dan scripten, laat je scripts hier controleren en kijk in het OOP forumdeel naar de topics en lees ze en kijk wat de experts te zeggen hebben en hoe hun code eruit ziet.
- als je OOP goed onder de knie hebt kom je vanzelf op problemen. Dan heb je Design Patterns (bepaalde technieken in OOP) nodig. Ga daar dan over in lezen, het voorbeeld hierboven gebruik het DataMapper pattern.

PS: Je zult van de code hierboven nog niet veel snappen. Maar wees gerust, na het lezen van de OOP beginnershandleiding begrijp je de code, zo moeilijk is de code van OOP niet (aangezien het veel op Flat PHP lijkt).
Gewijzigd op 22/02/2012 12:00:54 door Wouter J
 
Albert de Wit

Albert de Wit

22/02/2012 12:03:19
Quote Anchor link
Ok,

Hartelijk dank voor de link, tips en informatie! Ik ga direct bezig ermee.

Nogmaals bedankt!
Gewijzigd op 22/02/2012 12:06:23 door Albert de Wit
 
Kris Peeters

Kris Peeters

22/02/2012 12:48:56
Quote Anchor link
Albert de Wit op 22/02/2012 10:12:31:
Wat kan OOP wel dat normale PHP niet kan?


Niets

Albert de Wit op 22/02/2012 10:19:46:
Ok dus in feite kan ik evenveel met spaghetti php als OOP?


Deze cartoon vind je op php.net, bij de operator goto ( http://php.net/manual/en/control-structures.goto.php )
http://www.php.net/manual/en/images/0baa1b9fae6aec55bbb73037f3016001-xkcd-goto.png
Deze jongen vraagt zich de zelfde vraag als jij.

Maar serieus ... wat Wouter zegt.
Gewijzigd op 22/02/2012 12:53:47 door Kris Peeters
 
Albert de Wit

Albert de Wit

22/02/2012 12:50:59
Quote Anchor link
haha oke begrepen :D bedankt :D

Toevoeging op 22/02/2012 13:12:21:

Nog 1 vraagje...

wat is het verschil tussen dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$jan
= new User();
$jan->setUsername('jan');

$inge = new User();
$inge->setUsername('inge');

echo 'Dit script kent twee gebruikers: '.$jan->getUsername().' en '.$inge->getUsername().'.';
?>


en dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php  
$jan
= 'jan';
 
$inge = 'inge';

echo 'Dit script kent twee gebruikers: '.$jan.' en '.$inge.'.';
?>
 
Kris Peeters

Kris Peeters

22/02/2012 13:26:59
Quote Anchor link
Wat je doet met OOP.

Basically groepeer je twee dingen: functies en variabelen.

In plaats van $jan en $piet als losse variabelen bij te houden (Dat zal dan juist hun naam zijn), kan je een object $jan en een ander object $piet bijhouden.
Beide zijn van de class Persoon.

Die objecten kunnen van alles van informatie groeperen

bv.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$jan
->geboortedatum = "1985-05-06"
$jan->leeftijd() // dit zal de leeftijd berekenen, op basis van $jan->geboortedatum
$jan->telefoonnummer = '...';
?>


Elk object van de class Persoon heeft alle eigenschappen (= variabele binnen de class) en methodes (= functie binnen een class) van de class Persoon ter beschikking.
Gewijzigd op 22/02/2012 13:28:34 door Kris Peeters
 
Albert de Wit

Albert de Wit

22/02/2012 14:03:48
Quote Anchor link
Ok dus in feite is een class in OOP een soort bibliotheek ofmisschien een beetje specifieker een soort wikipedia... je kunt informatie verkrijgen en sturen.

hartstikke bedankt :D
 
Wouter J

Wouter J

22/02/2012 16:55:01
Quote Anchor link
Nee, een class is in OOP een object (Vandaar die naam OOP object geörienteerd programmeren).

Een object moet je zien als bijv. een persoon, een reactie, een gastenboek, een website pagina, een header, een blog post, enz. Deze hebben ook meerdere varianten, bijv. een admin klasse als uitbouw van de persoon.
Een object heeft meerdere eigenschappen. Een persoon heeft bijv. een naam, een leeftijd en een blog post een titel, author, content, enz. Deze eigenschappen zijn de properties (variabele) van een class.
Elk object kan deze eigenschappen veranderen. De author van een post kan zijn content of titel veranderen en een persoon kan een andere naam krijgen. Deze veranderingen worden uitgevoerd door methods (functies) van een class.
 
Albert de Wit

Albert de Wit

22/02/2012 16:59:56
Quote Anchor link
aaaaah.... zo..

nu snap ik het een stuk beter.
ik dacht al wat men toch met objecten bedoelde met personen.
 
- Raoul -

- Raoul -

22/02/2012 17:24:03
Quote Anchor link
Het belangrijkste van OOP blijft nog steeds op een object georiënteerde manier denken.
Als je dat niet doet kan je ook gewoon even goed functie's schrijven.
 
Albert de Wit

Albert de Wit

04/04/2012 13:39:14
Quote Anchor link
Weet iemand een goed boek voor OOP PHP? Kan ik een link krijgen.
 
Yanick  vB

Yanick vB

04/04/2012 14:45:45
Quote Anchor link
Ik heb nu het boek PHP Object ORiented Solutions van David Powers, moet er nog aan beginnen maar staat volgens mij aardig wat goede informatie in als ik hem zo bekijk (het is wel in het Engels).

http://www.amazon.com/PHP-Object-Oriented-Solutions-David-Powers/dp/1430210117
Gewijzigd op 04/04/2012 14:56:23 door Yanick vB
 
Albert de Wit

Albert de Wit

04/04/2012 16:50:59
Quote Anchor link
Ok hey bedankt! ik zal hem direct bestellen ;)
 
Albert de Wit

Albert de Wit

16/04/2012 09:48:33
Quote Anchor link
Misschien ben ik achterlijk ofzo, maar nu ik het boek heb ziet alles makkelijker. Waarom is een boek simpeler te begrijpen?
 
Reshad F

Reshad F

16/04/2012 11:09:00
Quote Anchor link
@albert wat vind je van het boek? als je er tevreden over bent wil ik hem ook bestellen. want op internet vind je bijna alleen gastenboek tuts voor OOP die heb ik al tig keer doorgenomen ik snap de basis van OOP maar kom er nog steeds niet uit :(
 
Albert de Wit

Albert de Wit

16/04/2012 11:10:14
Quote Anchor link
ik vind het fijn omdat hier ook ezelbruggetjes in worden verteld. ik ben nog maar op pagina 20 maar ik denk dat ik vandaag nog op 100 eindig :D
 
Ozzie PHP

Ozzie PHP

16/04/2012 11:27:24
Quote Anchor link
Wat voor "ezelbruggetjes"? Kun je een paar voorbeelden noemen?
 

Pagina: 1 2 volgende »



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.