login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP5]Vraag over private/protected/public

Offline Ibrahim - 29/04/2006 15:51
Avatar van IbrahimPHP expert Beste leden,

Ik ben bezig met het scripten in OOP stijl. Ik lees veel tutorials en ook php.net Nu lees ik het stuk met public, protected en private. Ik snap het allemaal wel (hoe je het gebruikt) maar het nut gaat me gewoon voorbij.

Misschien dat iemand me dat kan vertellen ?

12 antwoorden

Gesponsorde links
Offline Gerard - 29/04/2006 15:59
Avatar van Gerard Ouwe rakker Met dit systeem is het mogelijk om bepaalde functies af te bakenen voor gebruik van buiten je klasse of vanuit klassen die jouw klasse extenden.

Een stukje security dus.
Offline Ibrahim - 29/04/2006 16:03
Avatar van Ibrahim PHP expert maar een class kun je toch zelf extenden en dat doe je toch zelf... Waarom zou je dat willen beveiligen voor jezelf ?
Offline Gerard - 29/04/2006 16:04
Avatar van Gerard Ouwe rakker Omdat je soms met meerdere coders werkt. En bepaalde functies niet te benaderen hoeven te zijn extern (van buiten je klasse).

Soms maak je je klasse ook public, dan kan het ook handig zijn om mensen wat te sturen door bepaalde functies/vars te beveiligen.
Offline Ibrahim - 29/04/2006 16:08
Avatar van Ibrahim PHP expert of zoals in het script van nemesiskoen, het beveiligen van een IP adres

Dan kun je dus ook de fout niet maken dat het aangeroepen kan ?
Offline Gerard - 29/04/2006 16:08
Avatar van Gerard Ouwe rakker Bijvoorbeeld ja
Offline Ibrahim - 29/04/2006 16:12
Avatar van Ibrahim PHP expert dan snap ik wel de functie private maar protected die nut... 
Offline Gerard - 29/04/2006 16:13 (laatste wijziging 29/04/2006 16:15)
Avatar van Gerard Ouwe rakker protected is om te zorgen dat die variabele wel aan te spreken is wanneer je klasse extended wordt.

lees deze eens door: http://www.site...&cat=4 want ik kan er wel naast zitten
Offline Stijn - 29/04/2006 16:13
Avatar van Stijn PHP expert zodat je buiten je class de gegevens in de class niet kan manipuleren of bepaalde dingen niet kan aanroepen.
Offline Ibrahim - 29/04/2006 16:20
Avatar van Ibrahim PHP expert als je de class extend kun je de public en protected wel gebruiken maar private niet (toch ?)
Offline kokx - 29/04/2006 17:32
Avatar van kokx Onbekend Dat heb je goed geraden ja.
Offline nemesiskoen - 29/04/2006 20:45
Avatar van nemesiskoen Gouden medaille

PHP expert
  1. <?php
  2. class Test {
  3. private $something; // some_important_intern_var
  4.  
  5. public function something() { /* do something */ }
  6. }
  7.  
  8. OF
  9.  
  10. class Test {
  11. var $something; // some_important_intern_var
  12.  
  13. function something() { /* do something */ }
  14. }


Als je dan vervolgens 'something()' wil aanroepen krijgje zoiets:

  1. <?php
  2. $t = new Test;
  3. $t->someting;


woops, een fout, ik roep something aan. In het eerste geval geeft het een interne error, in het tweede wordt er gewoon niets gedaan (of mss een warning omdat het nutteloos is). Nu loopt alles fout maar ga je mooi mogen gaan debuggen om erachter te komen dat je haakjes bent vergeten.

Hierbij heb ik het nut van private wel uitgelegd denk ik. Protected is gewoon als je hetzelfde wil maar dat hij wel moet overgegeven worden aan de child-klassen.
Offline indianajames - 30/04/2006 00:34
Avatar van indianajames Nieuw lid het is ook handig voor toekomstige aanpassingen aan je klassen.

Als je variabele "something" wil aanpassen doe je dit het beste met een setter methode:

  1. function setSomething($data) {
  2. $this->something = $data;
  3. }


Het voordeel hiervan is dat als je later de data op een andere manier il opslaan, dat je dan nog altijd dezelfde methode kunt gebruiken, je moet enkel de functie aanpassen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.367s