"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."
Verwijderd
Beter:
$edit = array_key_exists ( 'edit', $_POST ) ? $_POST [ 'edit' ] : null;
Nog beter: eigen functie/methode schrijven als je dit zo graag automatisch wilt. Ik word persoonlijk ook gek van alle zinloze notices, en gebruik al een hele tijd een methode voor dit eenvoudige "probleem".
[ Voor 12% gewijzigd door Verwijderd op 01-10-2005 20:15 ]

1
2
3
4
5
| $edit = NULL; if (isset($_POST['edit'])) { $edit = $_POST['edit']; echo 'Het form is gepost!'; } |
In stricte talen als C kun je ook geen variabelen aanspreken die er niet zijn, en ik vind eigenlijk dat PHP hier minstens een warning voor moet geven en niet alleen maar een notice.
[ Voor 3% gewijzigd door NMe op 01-10-2005 20:22 ]
'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.
Of:Verwijderd schreef op zaterdag 01 oktober 2005 @ 20:14:
Beter:
$edit = array_key_exists ( 'edit', $_POST ) ? $_POST [ 'edit' ] : null;
1
| $edit = isset($_POST['edit']) ? $_POST['edit'] : null; |
Of is er enig voordeel van key_exist over isset wat ik over het hoofd zie?
Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info
dont at mail dot me
15-Dec-2004 05:35
To: nick cope nl
> array_key_exists() is in some circumstances MUCH slower than isset().
Perhaps in your case the performance gain with isset() is caused by cutting "null" values out of the recursion... got many nulls around your arrays?
'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.
Ben toch maar eens even in de Drupal core gaan kijken waarom deze applicatie niet dezelfde notice geeft bij deze constructie. Het blijkt dat zij een eigen error handling functie gebruiken, die notices negeert en niet aan de user teruggeeft:Reveller schreef op zaterdag 01 oktober 2005 @ 20:11:
Ik snap niet waarom ik deze error krijg. [...] Ik heb al veel vaker met deze constructie gewerkt, onder andere toen ik een Drupal module schreef.
1
2
3
4
5
6
7
8
9
10
11
| function error_handler($errno, $message, $filename, $line, $variables) { $types = array(1 => "error", 2 => "warning", 4 => "parse error", 8 => "notice", 16 => "core error", 32 => "core warning", 64 => "compile error", 128 => "compile warning", 256 => "user error", 512 => "user warning", 1024 => "user notice"); $entry = $types[$errno] .": $message in $filename on line $line."; if ($errno & E_ALL ^ E_NOTICE) { watchdog("error", $types[$errno] .": $message in $filename on line $line."); if (error_reporting()) { print "<pre>$entry</pre>"; } } } |
Heb dit meteen even aangekaart op de Drupal website. Overigens bedankt voor de reakties hoe je dit wel correct zou kunnen programmeren. Niet dat ik dat niet wist - de reden om deze constructie te gebruiken was voornamelijk dat het wat korter is dan een nette methode, en ik probeer mijn code zo compact mogelijk te houden. Dit mag alleen uiteraard niet ten koste gaan van de correctheid ervan.
@Cheatah - onder andere op de manier van Drupal kunnen notices worden afgevangen voor ze naar de client gestuurd worden. Toch wordt de notice wel door de PHP interpreter gemaakt. Hoewel slechts een milliseconde - er treedt hierdoor wel een vertraging op. Ik heb die vraag ook op de Drupal site gesteld -- waarom dan niet meteen helemaal correct programmeren?
"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."
Reveller schreef op zaterdag 01 oktober 2005 @ 20:11:
Ik heb de volgende code:
PHP:
1 2 3 if ($edit = $_POST['edit']) { // line 5 in code... echo 'Het form is gepost!'; }
Als ik de pagina waar deze code in staat laad, krijg ik de volgende error: "Notice: Undefined index: edit in C:\Program Files\Apache2\htdocs\shop\login.php on line 5".
Ik snap niet waarom ik deze error krijg. Immers - als de pagina geladen wordt zonder dat er gepost is, is $_POST leeg en zou $edit toch de waarde null moeten krijgen? Ik heb al veel vaker met deze constructie gewerkt, onder andere toen ik een Drupal module schreef. Misschien komt het door het Bokbier van gisteravond, maar na een uur nalopen van includes die boven deze code worden aangeroepen (en waar schijnbaar geen fout in staat), weet ik niet meer wat er nu fout gaat. Iemand die het wel ziet?
1
2
3
4
5
| if ($edit == $_POST['edit']) { // line 5 in code... echo 'Het form is gepost!'; } // extra = je kan geen kwaad ;) |
[ Voor 4% gewijzigd door D4V3 op 01-10-2005 21:17 ]
op-voorraad.nl - Realtime voorraad updates voor de Playstation 5!

'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.