login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Nieuw in CakePHP

Offline CakeTim - 14/02/2008 09:33 (laatste wijziging 14/02/2008 09:35)
Avatar van CakeTimNieuw lid Hallo,

Ik heb me aangemeld op deze site omdat ik sinds enkele dagen met CakePHP werk en er meer over te weten wil komen. Ik heb een tutorial van deze site (http://www.sitemasters.be/tutorials/4/1/535/PHP/Websites_maken_met_CakePHP:_deel_2)
en het turorial voor het maken van een blog van de officiele CakePHP site al gedaan. Ik snap inmiddels het MVC systeem goed en kan nu met bestaande codes en voorbeelden van internet al best leuke dingetjes maken. Alleen zelf schrijven lukt nog niet. Daar heb ik dan ook wat vragen over waar ik geen goed antwoord op kan vinden.
Neem bijvoorbeeld dit stukje code:
  1. function view($id)
  2. {
  3. $this->Post->id = $id;
  4. $this->set('post', $this->Post->read());
  5.  
  6. }


Ik snap het gebruik van '$this->' niet. Dit wordt telkens weer gebruikt en waar staat het pijltje precies voor. Lijkt een zeer makkelijk onderdeel. Maar bij 'gewoon' programmeren in PHP kwam ik dit niet zo vaak tegen. Ook snap ik niet waar hij de variable '$id' vandaan haalt.
Kan iemand dit uitleggen?

9 antwoorden

Gesponsorde links
Offline Ontani - 14/02/2008 09:40
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
$this is een verwijzing naar het huidige object waar je in zit.
In dit geval uw Controller (omdat ik zie dat Post uw Model is).

Omdat uw Post model bij uw Posts Controller hoort kan je via:
$this->Post-> alle functies en variabelen van je Post Model aanroepen.

$this->Post->id is een standaard variabele die wanneer ingesteld wordt overeenkomt met de id van een post in de mysql table posts.

ik vind het altijd gemakkelijker om een post op te halen op de volgende manier:

  1. $this->set('post',$this->Post->findById($id));


Deze regel vind ik ook duidelijker omdat hij met findById meteen beschrijft wat je doet met die functie. Je haalt een post op die bij het gevraagde id hoort.

Hopelijk was dit een beetje duidelijk.
Offline BramBo - 14/02/2008 09:45
Avatar van BramBo JS gevorderde Dit alles heeft niets te maken met Cake, behalve dan dat het OOP opgebouwd is en dus met klasse werkt. Hierover zijn talloze tutorials te vinden!

Kortom:
$this staat voor de scope van de huidige class.
-> refereert naar een binnen liggende methode/property in de desbetreffende klasse.
En id wordt mee gegeven als parameter.

Even een voorbeeldje om het iets duidelijker te maken:
  1. class user {
  2. var name = "cakeTime";
  3. function printName() {
  4. print $this->name;
  5. }
  6.  
  7. function printString($string) {
  8. print $string;
  9. }
  10. }
  11. // aanmaken van object:
  12. $actieveObject = new user();
  13. $actieveObject->printName(); // print cakeTime op het scherm
  14. $actieveObject->printString("pieTime"); // print pieTime op het scherm


Hoop dat dat je vraag beantwoord.
Offline Ontani - 14/02/2008 09:58
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Hij stelt een vraag met betrekking tot cakephp, classes en objecten, ik leg hem uit wat dit doet, hoe ik het doe en waarom ik het zo doe om hem een beter inzicht te geven in de mogelijkheden van cakephp en dan komt er een reactie als: "Dit alles heeft niets te maken met Cake" !? netjes
Offline BramBo - 14/02/2008 10:02
Avatar van BramBo JS gevorderde Dit was geen reactie op jou post, excuses als ik je hiermee beledigd heb. Ik doelde er slechts op dat de manier van aanroepen e.d. geen directe correlatie heeft met Cake maar gewoon de syntax opbouw van klasse en objecten is.
Offline Bart - 14/02/2008 10:31 (laatste wijziging 14/02/2008 10:32)
Avatar van Bart PHP expert
BramBo schreef:
Dit was geen reactie op jou post, excuses als ik je hiermee beledigd heb. Ik doelde er slechts op dat de manier van aanroepen e.d. geen directe correlatie heeft met Cake maar gewoon de syntax opbouw van klasse en objecten is.
Wat Ontani heeft uitgelegd heeft wel degelijk betrekking tot CakePHP Brambo! $this-> is niets nieuws inderdaad. Maar Ontani heeft de TS uitgelegd hoe je $this-> in CakePHP gebruikt en waarom. De TS gaf aan dat hij nogal wat problemen tegenkwam als hij zelf CakePHP gebruikt en schrijft. Daarom legde Ontani dit uit.

Dus Brambo, kwestie van LEZEN.
Offline CakeTim - 14/02/2008 10:33
Avatar van CakeTim Nieuw lid Oke, bedankt voor de reacties. Dus als ik het goed begrijp werkt het zo
  1. function view($id)
  2. {
  3. $this->Post->id = $id;
  4. $this->set('post', $this->Post->read());
  5. }

Op de 3e regel wordt er een record uit de database 'geselecteerd'. En op de 4e regel wordt hij 'gelezen'. Daarbij is 'set' op de 4e dus een standaard fucntie?

  1. function index()
  2. {
  3. $this->set('posts', $this->Post->findAll(0,0,"date ASC",0,0,0));
  4. }

En hier wordt 'posts' (in meervoud dus) gebruikt omdat het om alle records uit de database gaat. En verder op de regel wordt 'Post' omdat dit overeen komt met het model.

Zouden jullie mij aanraden om verder te gaan met tutorials van CakePHP of van OOP om eerst dat te begrijpen?
Offline Ontani - 14/02/2008 10:40
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
@cakeTim in het eerste voorbeeld:
op regel 3 wordt id van uw Model ingesteld, op regel 4 wordt de record uitgelezen, het id wordt dan automatisch ingesteld (omdat je dit hiervoor al hebt gedaan). $this->set('var_name','var_value') is een standaard functie van cakephp om variabele door te geven naar uw views. zo zal in de view van post nu alles beschikbaar zijn in de variabele $post.

voor uw 2e voorbeeld zit je juist, alles records die bij het model Post horen ( en dus de tabel posts ) worden opgehaald en in de variabele $posts gestoken.
Offline Bart - 14/02/2008 10:40
Avatar van Bart PHP expert Zekere kennis van OOP is altijd handig, het is handig om te begrijpen hoe classes e.d. werken.

Ook zou ik je graag doorverwijzen naar
irc.freenode.net
#cakephp
Hier kan je alle vragen stellen die je hebt.
Let wel dat ze meestal refereren naar documentatie, als ze dit doen zou ik je ook aanraden om dit te doen. Het heeft mij in ieder geval een hoop tijd bespaard.
Offline CakeTim - 14/02/2008 11:56
Avatar van CakeTim Nieuw lid
Quicky schreef:
[..quote..]Wat Ontani heeft uitgelegd heeft wel degelijk betrekking tot CakePHP Brambo! $this-> is niets nieuws inderdaad. Maar Ontani heeft de TS uitgelegd hoe je $this-> in CakePHP gebruikt en waarom. De TS gaf aan dat hij nogal wat problemen tegenkwam als hij zelf CakePHP gebruikt en schrijft. Daarom legde Ontani dit uit.

Dus Brambo, kwestie van LEZEN.

Toch heb ik de reactie van Brambo niet als ongewest beschouwd hoor en ik snap ook wel waar hij het over had  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.233s