OOP (met Class werken)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

R3b0rN

R3b0rN

22/08/2007 14:07:00
Quote Anchor link
Ik heb enige ervaring met PHP, nu ben ik gaan kijken naar OOP programmeren en nu zie ik dat er veel met class wordt gewerkt.
Ik begrijp het niet helemaal, misschien dat iemand mij iets meer kan uitleggen op een simpele manier.

Ze maken dus een class... is dat één ding dat je vervolgens kunt aanroepen net zoiets als een function? enfin...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class ContForm{

var
$UserName;
var
$UserEmail;

function
SendMail()
  {

  // mail versturen
 // blablabla

  }
}

?>


ik weet dat je variable aangeeft als "var $variable" en dat alles natuurlijk
binnen de class 'tag' moet zeg maar. Wat ik onder andere niet helemaal snap is dat je vaak ziet iets als $var -> $doh;

Hopelijk iemand die mij wat meer kan uitleggen over dit soort van 'denk werk' binnen het PHP gebeuren.

Groetjes
 
PHP hulp

PHP hulp

25/01/2025 19:38:16
 
Winston Smith

Winston Smith

22/08/2007 14:18:00
Quote Anchor link
OOP staat los van PHP. Classes staan zo ongeveer gelijk met OOP. Een klasse moet je zien als de blauwdruk van een object; een aannemer gebruikt een bouwtekening (de klasse) om een huis (het object) mee te maken.

Met de klasse maak je dus het object, waarmee je vervolgens dingen kan gaan doen. Variabelen binnen klassen (dan heten ze properties) worden overigens sinds PHP5 niet meer aangeduidt met var, maar met hun zichtbaarheid: private voor variabelen die alleen binnen de klasse zelf bruikbaar zijn, protected voor variabelen die ook zichtbaar mogen zijn voor overervende klassen en public variabelen zijn voor iedereen zichtbaar. Je krijgt dan dus public $username bijvoorbeeld.

Als $username public is, kan je die aanspreken van buiten de klasse door $mijnObject->username. Dat pijltje is een speciale operator. Kijk ook eens op php.net voor de OOP mogelijkheden van PHP5.

Edit:
Linkje toegevoegd.
Gewijzigd op 01/01/1970 01:00:00 door Winston Smith
 
Manaus

Manaus

22/08/2007 14:19:00
Quote Anchor link
een class is een verzameling van functies en constanten.
Je kan binnen een class functie in die class oproepen dmv $this -> functienaam();
Je kan de vars ook aanroepen, $this -> var;
 
R3b0rN

R3b0rN

22/08/2007 14:33:00
Quote Anchor link
dus het is gewoon een 'groot' bestand wat ik include en wat ik vervolgens gebruik door in het document de functie of variable aan te roepen door
$this->SendData();
bijvoorbeeld?
constanten moet ik even opzoeken geen idee wat dat zijn haha.
Iemand die ergens een goede tutorial weet hiervoor misschien?
OOP leren om het zo maar te noemen hehe
 
Manaus

Manaus

22/08/2007 14:42:00
Quote Anchor link
constanten zijn die dingen die je bovenaan difinieerd, var $variable; blablabla
 
Winston Smith

Winston Smith

22/08/2007 14:44:00
Quote Anchor link
Er zijn in de tutorial afdeling van deze site wel enkele tutorials hierover. Je kan het niet echt zien als een groot bestand wat je include denk ik. Je moet het meer zien als een soort van onderdeel: als je het nodig hebt, pak je het uit de 'kast' en verwerkt het in je systeem.

Let erop dat een klasse een verzameling bij elkaar behorende functies en eigenschappen zijn. Als je een klasse maakt die email verstuurt en in die klasse maak je verbinding met een database om emailadressen op te halen, dan kan je dat beter door een apart database object laten doen.

Ik heb overigens net het 'handboek objectgeorienteerd programmeren' van Jan Beurghs gelezen. Op zich een toegankelijk (en relatief goedkoop) boek, ook al gaat het imho niet enkel over OOP (maar ook over 'gewone' programmeeraspecten). Enige nadeel vond ik verder dat hij Java als programmeertaal gebruikt in dat boek (waardoor sommige gedeelten onbruikbaar zijn voor andere programmeertalen), maar je kan het vrij makkelijk omzetten naar PHP.
Gewijzigd op 01/01/1970 01:00:00 door Winston Smith
 
Winston Smith

Winston Smith

22/08/2007 14:47:00
Quote Anchor link
Manaus schreef op 22.08.2007 14:42:
constanten zijn die dingen die je bovenaan difinieerd, var $variable; blablabla
Juist niet, dat zijn variabelen! Constanten zijn 'variabelen' die niet veranderen: const CONSTANTE_WAARDE = 100;

Variabelen kunnen en mogen wél veranderen!

Over constanten binnen klassen staat ook het een en ander in de PHP handleiding waarvan ik eerder de link gaf.
 
Jan geen

Jan geen

22/08/2007 14:50:00
Quote Anchor link
Object geörienteerd programmeren is een bepaalde denkwijze, dit leer je niet even in een middagje... Er is genoeg te vinden over OOP, zoek maar is in google. Voor een contact formulier hoef je eigenlijk geen klasse te maken, je kan direct een mail klasse gebruiken, bijv. PHPMailer. Denk dat je het beste eerst met bestaande bestaande classes moet gaan werken.
Gewijzigd op 01/01/1970 01:00:00 door Jan geen
 
Pim Vernooij

Pim Vernooij

22/08/2007 16:48:00
Quote Anchor link
Let op dat jullie hier PHP4 en PHP5 door elkaar halen -> const kan vanaf PHP5, en var is vanaf PHP5 deprecated; public, private en protected zijn daarvoor in de plaats gekomen. Zie de documentatie.

Maar wat Rik zegt: OO is een denkwijze. Zelfs als je klassen gebruikt, wil dat nog niet zeggen dat je volgens deze denkwijze werkt. Daar komt veel meer bij kijken.
Gewijzigd op 01/01/1970 01:00:00 door Pim Vernooij
 
PHP erik

PHP erik

22/08/2007 17:36:00
Quote Anchor link
@TS
Als je begint met OOP, doe het dan wel in PHP 5. Want OOP van PHP 4 is echt waardeloos, en dat van PHP 5 is vrij krachtig.
 
R3b0rN

R3b0rN

23/08/2007 09:09:00
Quote Anchor link
hartstikken bedankt voor jullie reacties ik zal een
op onderzoek uitgaan!
 
Pim Vernooij

Pim Vernooij

24/08/2007 14:11:00
Quote Anchor link
PHPerik schreef op 22.08.2007 17:36:
Als je begint met OOP, doe het dan wel in PHP 5. Want OOP van PHP 4 is echt waardeloos, en dat van PHP 5 is vrij krachtig.
Dat ben ik niet met je eens, PHPErik. Om de principes van OO door te krijgen heb je aan PHP4 net zoveel als aan PHP5. Pas als je je gaat bezighouden met de geavanceerdere toepassing van OO in PHP, adviseer ik met PHP5 te beginnen.

Waarom? Omdat je de geavanceerde OO functionaliteit van PHP5 niet nodig hebt bij het aanleren van de denkwijze.
Gewijzigd op 01/01/1970 01:00:00 door Pim Vernooij
 
TJVB tvb

TJVB tvb

24/08/2007 14:19:00
Quote Anchor link
Pim Vernooij schreef op 24.08.2007 14:11:
Dat ben ik niet met je eens, PHPErik. Om de principes van OO door te krijgen heb je aan PHP4 net zoveel als aan PHP5. Pas als je je gaat bezighouden met de geavanceerdere toepassing van OO in PHP, adviseer ik met PHP5 te beginnen.

Waarom? Omdat je de geavanceerde OO functionaliteit van PHP5 niet nodig hebt bij het aanleren van de denkwijze.

Dan moet je eens in php 4 meerdere instanties van 1 class willen maken en die door elkaar gebruiken.
Dan zul je een belangrijk bezwaar zien namenlijk dat voor alle instanties de laatst aangemaakte gebruikt wordt.
Gewijzigd op 01/01/1970 01:00:00 door TJVB tvb
 
Jelmer -

Jelmer -

24/08/2007 14:25:00
Quote Anchor link
TJVB schreef op 24.08.2007 14:19:
Dan moet je eens in php 4 meerdere instanties van 1 class willen maken en die door elkaar gebruiken.
Dan zul je een belangrijk bezwaar zien namenlijk dat voor alle instanties de laatst aangemaakte gebruikt wordt.

Laat dat eens in een voorbeeldje zien dan? Want het enige verschil wat ik kan bedenken dat hiermee te maken heeft is het verschil in het omgaan met kopiëren in plaats van verwijzen.
 
R3b0rN

R3b0rN

24/08/2007 14:27:00
Quote Anchor link
nog niet echt een tutorial gevonden helaas maar toch bedankt voor jullie tips.
php ben ik eigenlijk al aardig ver mee denk ik, ik moet alles van internet af leren dus gaat het wat trager dan wanneer je een opleiding vindt maar een forum of zo, of marktplaats ding bouwen is gene probleem hehe.

dingen zoals phpbb, invision power board en andere, daarin kom ik vaak vreemde dingen tegen die ik nog niet ken. is dit nu ook OOP gemaakt om het zo maar te noemen of is dat echt diepgaand PHP gebeuren wat ik nog niet ken?
 
TJVB tvb

TJVB tvb

24/08/2007 14:48:00
Quote Anchor link
Jelmer schreef op 24.08.2007 14:25:
Laat dat eens in een voorbeeldje zien dan? Want het enige verschil wat ik kan bedenken dat hiermee te maken heeft is het verschil in het omgaan met kopiëren in plaats van verwijzen.

Je hebt gelijk, het had te maken met references. Ik heb het eerder ooit gehad en ben toen meteen overgestapt op php5.

Ik heb er al een streep doorgehaald.
 
Winston Smith

Winston Smith

24/08/2007 14:54:00
Quote Anchor link
Quote:
dingen zoals phpbb, invision power board en andere, daarin kom ik vaak vreemde dingen tegen die ik nog niet ken. is dit nu ook OOP gemaakt om het zo maar te noemen of is dat echt diepgaand PHP gebeuren wat ik nog niet ken?
Van phpBB en Invision Power Board weet ik het niet, maar kijk anders hier eens. Je kan ervan uit gaan dat dat professionele OOP code is :)
 
TJVB tvb

TJVB tvb

24/08/2007 14:56:00
Quote Anchor link
@R3b0rN
de interne zoekfunctie bij de tutorials is niet zo prettig, via google kom je wel vanalles tegen:
http://www.phphulp.nl/php/tutorials/8/302/
http://www.mastercode.nl/artikel/57/
 
Kees Schepers

kees Schepers

24/08/2007 15:01:00
Quote Anchor link
Leuk dat is mijn tutorial :p
 
Pim Vernooij

Pim Vernooij

24/08/2007 15:22:00
Quote Anchor link
TJVB schreef op 24.08.2007 14:19:
Pim Vernooij schreef op 24.08.2007 14:11:
...

Dan moet je eens in php 4 meerdere instanties van 1 class willen maken en die door elkaar gebruiken.
Dan zul je een belangrijk bezwaar zien namenlijk dat voor alle instanties de laatst aangemaakte gebruikt wordt.
De eerste 1,5 jaar dat ik OO programmeerde, deed ik dat in PHP4. Ik weet dus wel waar ik over praat. Jouw probleem gaat over references en is in PHP5 'opgelost' door objecten áltijd als reference mee te geven.
Gewijzigd op 01/01/1970 01:00:00 door Pim Vernooij
 
R3b0rN

R3b0rN

24/08/2007 16:00:00
Quote Anchor link
dankjullie wel voor de snelle reacties en links ga meteen even kijken ^^
 



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.