short IF
Is dat niet zo? Dan klopt er iets totaal niet.
Neem nou dit:
Nu doe ik bij $c de aanname dat $a en $b integers zijn. Dit weet ik, want dit is de enige optie, meer is er niet mogelijk.
Als ze toch iets totaal anders zijn, dan moet de server gehackt zijn en het bestand aangepast zijn ofzo, want anders zou ik niet weten hoe die variabelen veranderd zouden kunnen zijn.
Edit:
En sowieso, php is loosely typed, die vind $a = '1'; $b = '2'; $c = $a+$b; nog goed.
Session, Post en Get, mysql results.
Allemaal stuk voor stuk een string, volgens php dan.
Dus je kan bij het controlleren van input ook gewoon empty gebruiken, als 0 een toegestane waarde is.
Nu kan ik begrijpen dat empty een verraderlijke functie is.
Want hij hoeft niet per definitie helemaal empty te zijn, maar dat is een feit, geen aanname, en isset is er geen haar beter op, die doet ook niet alleen wat hij aangeeft.
Maar als jij liever deze code gebruikt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function myEmpty($var) {
if (
!isset($var) ||
$var === null ||
$var === NULL || //Ja, NULL is een constant, null is een normale null
$var == '\0' || //dit is de bitwise versie van null, misschien /0 weet niet
$var == "" ||
(is_int($var) && $var === 0) ||
//als ik iets vergeet
) return false;
return true;
}
?>
function myEmpty($var) {
if (
!isset($var) ||
$var === null ||
$var === NULL || //Ja, NULL is een constant, null is een normale null
$var == '\0' || //dit is de bitwise versie van null, misschien /0 weet niet
$var == "" ||
(is_int($var) && $var === 0) ||
//als ik iets vergeet
) return false;
return true;
}
?>
En dat dan in plaats van
Dan moet je dat natuurlijk vooral doen.
Als je het er niet mee eens bent dat php niet type-safe is, ga dan snel een andere programmeer taal uitzoeken, en laat php met rust.
Gewijzigd op 05/10/2010 23:25:53 door Nicoow Unknown
Maar toch, Karl heeft wederom eens gelijk!
Fijne dag nog met z'n allen!
Noppes Homeland op 05/10/2010 17:50:27:
En het probleem is nu juist, dat je niet weet waar je mee te maken hebt. Je weet dus ook niet wat je gaat evalueren. Dus laat empty gewoon links liggen....
Quote:
In dit geval lijkt het mij best kunnen. De var is in dit geval altijd geset en je wilt weten of er iets in zit of niet.
En het probleem is nu juist, dat je niet weet waar je mee te maken hebt. Je weet dus ook niet wat je gaat evalueren. Dus laat empty gewoon links liggen....
Oke 2 opties:
1) Ga ergens anders over empty() zeiken, maar niet meer @ phphulp.nl (in ieder geval ergens waar niemand er last van heeft)
2) Of onderbouw je "mening" eens. Je roept van alles, maar je weet zelf volgens mij niet eens waarom je het vind.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
class Decider
{
public $content;
public $page;
function __construct()
{
$this->page = (!empty($_GET['page']) ? $_GET['page'] : 'home');
echo $this->page;
$this->build($this->page);
}
function build($page)
{
switch($page)
{
case 'contact' :
case 'verzenden' :
include_once('includes/contact.php');
$contact = new Contact();
$this->content = $contact->content;
break;
case 'demo' :
case 'aanvraag_demo' :
include_once('includes/demo.php');
$demo = new Demo();
$this->content = $demo->content;
break;
case 'home' :
case 'ytex_info' :
case 'ytex_inst' :
case 'ytex_prys' :
case 'ytex_mode' :
case 'ansett_info' :
case 'ansett_inst' :
case 'ansett_prys' :
case 'ansett_mode' :
include_once('includes/page.php');
$page = new PageManager();
$this->content = $page->content;
break;
case 'loket' :
echo 'Loket';
break;
}
}
}
?>
class Decider
{
public $content;
public $page;
function __construct()
{
$this->page = (!empty($_GET['page']) ? $_GET['page'] : 'home');
echo $this->page;
$this->build($this->page);
}
function build($page)
{
switch($page)
{
case 'contact' :
case 'verzenden' :
include_once('includes/contact.php');
$contact = new Contact();
$this->content = $contact->content;
break;
case 'demo' :
case 'aanvraag_demo' :
include_once('includes/demo.php');
$demo = new Demo();
$this->content = $demo->content;
break;
case 'home' :
case 'ytex_info' :
case 'ytex_inst' :
case 'ytex_prys' :
case 'ytex_mode' :
case 'ansett_info' :
case 'ansett_inst' :
case 'ansett_prys' :
case 'ansett_mode' :
include_once('includes/page.php');
$page = new PageManager();
$this->content = $page->content;
break;
case 'loket' :
echo 'Loket';
break;
}
}
}
?>
Als ik vervolgens naar http://www.domein.com ga wordt er niets uit deze class gedisplayd.
Wanneer ik er /home achter gooi wel.
Maar, als ik dus naar http://www.domein.com ga en de $page echo dan komt er wel gewoon home te staan....
Wat doe ik hier dan nu fout?