login  Naam:   Wachtwoord: 
Registreer je!
 Forum

OOP PHP, methoden van object a, aanroepen in een functie van object b

Offline simolokid - 17/09/2010 00:29
Avatar van simolokidNieuw lid Een vrij korte en praktische vraag, zoals in de topic titel ook al gesteld.

Hoe werkt dit precies, wat is hier de meest efficiente manier voor?
Ik bedoel, om nou in elke function die je declareert in je klasse include("bestand.php") of require te doen is een beetje ... repetatief, iets wat je met OOP juist vermijden wil.

10 antwoorden

Gesponsorde links
Offline Abbas - 17/09/2010 01:03
Avatar van Abbas Gouden medaille

Crew .NET
http://www.site...en_met_OOP

http://www.site...3/PHP/OOP_(Public,_Protected_en_Private)
Offline MiST - 17/09/2010 04:22
Avatar van MiST Lid __autoload() implementeren ;) en uw autoloader registreren met PHP
Offline simolokid - 17/09/2010 11:36 (laatste wijziging 17/09/2010 14:02)
Avatar van simolokid Nieuw lid Ja, die tutorials heb ik al doorgenomen maar dit is niet helemaal wat ik bedoel.

Stel ik heb het volgende:

(ff of the top of my head, hier en daar wat syntax errors dus)

  1. class a
  2. {
  3. private $var1;
  4.  
  5. public __construct()
  6. {
  7. $this->var1 = "classe bestaat";
  8. }
  9.  
  10. function zegIets()
  11. {
  12. echo ' hoi ' ;
  13. }
  14. }

Stel je even voor dat ik nog 3 methodes heb die ik graag zou willen aanroepen in deze classe.
Om nou $a = new a(); $a->zegIets(); $a->nogiets; $a->ennogiets; te doen, begint het wat veel op procedureel te lijken.

Dan is de techniek erachter wel OOP, maar de maneir waarop je dit aanroept is weer procedureel. Ik vraag me dus af of het niet handiger is om bv:
Stel je hebt een db nodig bij bijvoorbeeld een login manager.
Attribuut db maken, set + getters ook natuurlijk hiervan. Vervolgens maak je in de constructor de instantie van (in mijn geval) PDO. Het nadeel hiervan is, is dat als je een methode aanroept die geen db nodig heeft, deze toch wordt aangeroepen. Als ik 3 methodes nodig heb uit dezelde classe doe ik dus weer 3x $classnaaam->methode.

Mijn punt is, is er geen efficientere manier? kan ik op 1 of andere manier zorgen dat de aanroep van methodes dermate efficient is dat er dus geen overbodige instanties van classe worden gemaakt en dat de aanroep van de methode maximaal... 1-2, misschien een enkele keer 3 methodes bevat?

Alvast bedankt, (die __autoload zal ik straks even inbouwen in mn 'begin oop' project =p )

SimolokidPHP.net:
Offline Stijn - 17/09/2010 14:05
Avatar van Stijn PHP expert Zoiets heet denken op voorhand . Zorg ervoor dat je klasses goed in elkaar zitten. Je hebt je Database klasse. Je Login klasse zal misschien een instantie van je Database klasse nodig hebben. Je geeft die instantie van de Database klasse mee aan je Login klasse.

Ik snap niet waarom je problemen hebt met drie methodes op te roepen van je klasse na elkaar. Je kan het ook korter schrijven.

  1. class A
  2. {
  3. public function methodA() { ... return $this; }
  4. public function methodB() { ... return $this; }
  5. public function methodC() { ... return $this; }
  6. }
  7.  
  8. $obj = new A();
  9. $obj->methodA()->methodB()->methodC();


Als dit geen voldoende antwoord is moet je maar duidelijker je probleem omschrijven. Nu versta ik geen hol van wat jij probeert te zeggen.
Offline simolokid - 17/09/2010 14:37
Avatar van simolokid Nieuw lid Oh, bedankt voor je antwoord iig ;)

Ik dacht dat het niet 'oop' was als ik die methodes achter elkaar aanriep omdat dit dan teveel weg zou hebben van procedureel-php.

Gok dat ik het nu snap.

Groetjes!
Offline urqbz - 17/09/2010 20:59
Avatar van urqbz PHP interesse Jij begrijpt het prima nu, je moet niet gaan OOPen om het OOPen natuurlijk, het moet je niet belemmeren, maar helpen.
Offline carsm - 20/09/2010 20:51
Avatar van carsm Nieuw lid Ik heb hier al is een tutorial geschreven hoe OOP in het simpel werkt:
http://scripter...l-OOP.html
Offline avdg - 22/09/2010 17:51
Avatar van avdg PHP gevorderde werkt die link nog?
Offline cloudstrife - 22/09/2010 19:53
Avatar van cloudstrife PHP beginner Wat vind je fout met die 3 methodes achter elkaar op te roepen?

Achter elk van die methode steekt logica die je dankzij je klasse overal kan gebruiken, als je wil zelfs in meerdere applicaties.

Wat je zegt ivm je db instantie in de constructor en het aanmaken als het niet nodig is. Daarvoor moet je goed nadenken over de manier waarop je je klasses gaat opbouwen. Je moet er voor zorgen dat alles zo onafhankelijk mogelijk blijft van elkaar. Je DB instantie zal dus een apparte klasse zijn, misschien een singleton? Wil je deze gebruiken in een andere klasse dan kan je die daar terug in die zijn methode aanroepen zonder dat hiervoor in de constructor iets moet voorzien worden.



Offline avdg - 23/09/2010 19:40
Avatar van avdg PHP gevorderde Er is niets fout aan, het is alleen een manier om je code wat makkelijker te gebruiken. Tenminste, voor mensen die al overweg kunnen met oop en niet graag 3 regels gebruiken als het ook op 1 regel geschreven kan worden (zonder de code daarvoor op te kroppen).

Laat dat voorbeeld even links liggen voor nu, maar vergeet em niet als je nog meer oop wil zien.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.205s