"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
Voorbeeld:
1
2
3
4
5
| function get_title($id, &$title) { $title="xxx"; // of $title niet toekennen return true; // of false; } |
Je schoont $result niet..
/offtopic: Wie heeft nu de mooiste oplossing?
[ Voor 65% gewijzigd door BoAC op 02-11-2004 16:44 ]
1
| if (false !== ($title = get_title ($_GET['id']))) |
Of in get_title met static vars gaan werken. Zoiets:
1
2
3
4
5
6
7
8
9
10
11
| function get_title ($id) { static $ret; if (!isSet ($ret)) { $result = db_query("SELECT title FROM nodes WHERE id = %d", $id); if (db_num_rows ($result) != 1) $ret = ''; else $ret = db_result ($result, 0); } return $ret; } |
[ Voor 68% gewijzigd door PrisonerOfPain op 02-11-2004 16:51 ]
1
| if (($title = get_title($_GET['id'])) !== false) |
Jeej, spuit elf.
[ Voor 19% gewijzigd door NMe op 02-11-2004 16:41 ]
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
1
2
3
4
5
6
7
8
9
10
11
| function get_title($id) { $result = db_query("SELECT title FROM nodes WHERE id = %d", $id); if (db_num_rows($result) != 1) return null; else return db_result($result, 0); } $title = get_title($_GET['id']); if ($title != null) { ..... } |
je kan ook een lege string retourneren:
1
2
3
4
5
6
7
| function get_title($id) { $result = db_query("SELECT title FROM nodes WHERE id = %d", $id); if (db_num_rows($result) != 1) return ""; else return db_result($result, 0); } $title = get_title($_GET['id']); |
In dit geval kan je hem gewoon afdrukken.
Wat wil je eigenlijk met $title doen?
de mooiste hangt maar net af wat de TS met de $title wil doen
code -> php
[ Voor 15% gewijzigd door Salandur op 02-11-2004 16:48 ]
Assumptions are the mother of all fuck ups | iRacing Profiel
1
2
3
4
5
6
7
8
9
10
11
12
13
| function get_title($id, &$title) { $result = db_query("SELECT title FROM nodes WHERE nid = %d", $id); $title = db_result($result, 0); return true; // of false; } if (get_title(97, $title)) { echo $title; } |
Ik weet nu dat & een "reference" heet, maar kan iemand mij uitleggen wat het nu precies doet? Met andere woorden: "wat is een reference"?
@salandur - dit is een vereenvoudigd voorbeeld; het gaat om het principe. Maar je zou kunnen zeggen dat ik $title wil gebruiken om hem in een template te plaatsen, om de plek van de {title} token...mooiste oplossing kies ik nog, ik wil ze eerst allemaal begrijpen
[ Voor 28% gewijzigd door Reveller op 02-11-2004 16:52 ]
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
normaal geef je de waarde van een variabele door. dusReveller schreef op 02 november 2004 @ 16:51:
Ik weet nu dat & een "reference" heet, maar kan iemand mij uitleggen wat het nu precies doet? Met andere woorden: "wat is een reference"?
1
2
| $id = 1; getTitle($id); |
levert binnen getTitle() alleen maar 1 op. als deze wordt gewijzigd gebeurdt er met $id niks
Bij een reference wordt het geheugen adres doorgeveven. In dat geval levert een wijziging binnen getTitle() ook een wijziging van $id op.
Dan gewoon null of een lege string terug geven. Als de waarde null/lege string is dan eventueel niet doorgeven naar de template, afhangelijk van het soort template systeem dat je gebruik. Of een default title instellen:Reveller schreef op 02 november 2004 @ 16:51:
@salandur - dit is een vereenvoudigd voorbeeld; het gaat om het principe. Maar je zou kunnen zeggen dat ik $title wil gebruiken om hem in een template te plaatsen, om de plek van de {title} token...mooiste oplossing kies ik nog, ik wil ze eerst allemaal begrijpen
1
| if ($title == null) $title = "Standaard titel"; |
Suc6
[ Voor 39% gewijzigd door Salandur op 02-11-2004 16:56 ]
Assumptions are the mother of all fuck ups | iRacing Profiel
Had ik natuurlijk eerst al gezocht, maar het brengt mij weinig verder en geeft al helemaal geen antwoord op de vraag waarom de functie nu maar eenmalig uitgevoerd hoeft te worden...
"References can be thought of as hardlinking in Unix filesystem"
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
Hardlinks wijzen allebij naar dezelfde locatie in het geheugen (hardeschijf) maar zijn twee verschillende stukjes in de inode tabel (vergelijk met variabelen). In dit geval word de variabele $title aan de functie meegegeven, die de functie zelf vult. Het functie argument $title en de gewone variabele $title wijzen dus naar hetzelfde geheugen stukje. Het is niet zo dat het argument $title (normale variabele) naar de parameter $title wijst, wat in C het geval is.Reveller schreef op 02 november 2004 @ 16:54:
[...]
Had ik natuurlijk eerst al gezocht, maar het brengt mij weinig verder en geeft al helemaal geen antwoord op de vraag waarom de functie nu maar eenmalig uitgevoerd hoeft te worden...
"References can be thought of as hardlinking in Unix filesystem"
Ff vette ASCII art:
C:
1
| title -> title2 -> "blaat" |
PHP:
1
2
3
| title \ ----> "blaat" title2 / |
[ Voor 9% gewijzigd door PrisonerOfPain op 02-11-2004 17:03 ]
Verwijderd
aka pointerReveller schreef op 02 november 2004 @ 16:51:
Ik weet nu dat & een "reference" heet, maar kan iemand mij uitleggen wat het nu precies doet? Met andere woorden: "wat is een reference"?