Tutorials >
PHP >
[PHP] Fluent interfaces, de basis
|
Gepost op: 15 februari 2011 - 20:56 |
|
|
|
PHP gevorderde
 |
in je tweede voorbeeld staat een fout. je bent return $this vergeten bij changeStock |
|
|
|
Gepost op: 16 februari 2011 - 21:30 |
|
|
|
HTML interesse
 |
Ik snap het nut of de bedoeling van die fluent interfaces niet echt... |
|
|
|
Gepost op: 17 februari 2011 - 14:27 |
|
|
|
PHP expert
 |
valles10 schreef: Ik snap het nut of de bedoeling van die fluent interfaces niet echt... Zoals ook in de tutorial staat, is het belangrijkste voordeel de leesbaarheid van je code. Een mooi voorbeeld is zo'n database query klasse die met fluent interfaces werkt:
$query = new Query();
$query->select('*')->from('tabel')->where('veld', 'value')->limit(10);
$query->exec();
$query = new Query(); $query->select('*')->from('tabel')->where('veld', 'value')->limit(10); $query->exec();
Een ander voorbeeld zou bijvoorbeeld het bewerken van afbeeldingen kunnen zijn:
$image = new Image('image.png');
$image -> setBorder('black')
-> rotate(90)
-> save();
$image = new Image('image.png'); $image -> setBorder('black') -> rotate(90) -> save();
|
|
|
|
Gepost op: 18 februari 2011 - 12:42 |
|
|
|
Erelid
 |
In feite klopt uw stock-methode niet, want ge kunt bij een bestelling een amount meegeven, en dan trek je altijd 1 item af van de stock... niet dat dat ook maar van enig belang is voor het punt van deze tutorial, maar als we kunnen zagen kunnen we het niet laten hé  |
|
|
|
Gepost op: 18 februari 2011 - 17:51 |
|
|
|
HTML interesse
 |
in deze 'tutorial' komt het erop neer dat je sinds php 5
$obj->function()->function()->function(); kunt doen  |
|
|
|
Gepost op: 09 september 2011 - 23:35 |
|
|
|
Lid
 |
Misschien ook handig om uit te leggen, is dat je in PHP 5.3 ook gebruik kunt maken van de zogenaamde static:: methode.
Dit laat je toe om je Database Model ook nog modulair te maken.
Je maakt dus een DatabaseObject met de Common DB Queries, en laat de ander Classes (User, Stock, ...) deze Class extenden... |
|
|
|
Gepost op: 22 december 2013 - 22:33 |
|
|
|
Moderator
 |
Ik ken dit principe als "chaining".
En ja, het kan handig zijn. Maar het moet wel hout snijden uiteraard . |
|
|
|
Gepost op: 04 september 2014 - 12:09 |
|
|
|
Moderator
 |
De voorbeelden uit de tutorial zelf zouden in een transactie moeten staan, je wilt namelijk dat alle queries die achter deze methode-aanroepen steken worden uitgevoerd, of geen enkele. Dit moet een ondeelbare actie zijn om gegevensintegriteit in je database te waarborgen.
Daarnaast zijn, nu ik er over nadenk, deze voorbeelden niet echt realistisch. De orders die iemand plaatst zullen namelijk op voorhand niet (vaak) vaststaan . Het is waarschijnlijker dat je in een loop je sessie o.i.d. uitleest.
De voorbeelden van Joost hierboven daarentegen dekken de lading wat beter denk ik. |
|
|
Enkel aanvullende informatie is welkom. Geen prijzende of afkeurende reacties. |
|
|
|