Variables versturen via includes
ik kan geen variable die gezet word in een functie oproepen uit een andere pagina.
voorbeeld:
test.php
testing.php
Het is belangrijk dat er een variable word aangemaakt, die in dit geval door test.php aan te roepen is. Om te werken met return true; is niet afdoende omdat er in dezelfde functie meerdere variables gezet moeten gaan worden.
iemand?
testing.php:
edit:
testing.php:
werkt ook denk ik. Maar global is niet iets wat je wil gebruiken.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
define();
const
en anders moet je de functies iets laten returnen!
let wel dat de functie stopt na return!
Code (php)
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
//index.php
include_once('include.php');
$blaat = test(); //functie...
echo $blaat;
?>
//index.php
include_once('include.php');
$blaat = test(); //functie...
echo $blaat;
?>
Gewijzigd op 01/01/1970 01:00:00 door Lode
globals zou ik je zoiezo afraden!!!
Nog een dan, want jullie antwoorden zijn volgens mij niet afdoende:
test.php
Code (php)
testing.php
Code (php)
zoals je ziet is de bedoeling dat de functie doorloopt, dus geen returns.
hopelijk heeft dit het wat duidelijker gemaakt
??
Yay! That did it, thank you!
Zegeensa.php:
Script.php:
Et voila, je ziet nu aa : ).
Een $var die je in een functie aanmaakt is alléén in de functie bekend. Dus je kan met global of met return gaan werken.
Hij reageert op mijn 2e post. niet mijn 1e. zo werkt het wonderen voor mij.
zoals ik ook aangaf is het voor mij niet voldoende om met returns te werken omdat deze de functie stoppen.
@SanThe
Het werkt met &$error voor mij goed. Zit er andere voordelen aan het werken met globals?
Gewijzigd op 01/01/1970 01:00:00 door Thijs Damen
Thijs Damen schreef op 19.02.2008 22:41:
Voordelen? Je krijgt meer bugs, maar om dat nu voordelen te noemen...Zit er andere voordelen aan het werken met globals?
Je zult heel goed moeten documenteren dat een variabele voor bepaalde functies essentieel is. Dan kun je ze gebruiken, maar documenteren is niet bepaald een kwaliteit van programmeurs, ik heb ze er de afgelopen jaren nog niet op weten te betrappen.
Zelf gebruik ik nooit globals, puur om bugs te vermijden.
bedankt voor alle reacties, weer wat geleerd.
Robert_Deiman schreef op 20.02.2008 08:32:
Het kan ook wel op zo'n manier Thijs. Je kan dan een ontiegelijk lange lijst met woorden meegeven. Nu geef je er 2 mee die altijd of 3 of 5 lang moeten zijn. Stel dat je een 3e woord toe wilt voegen van een bepaalde lengte. Ik heb het herschreven naar wat dynamischers.
....
....
Waar het mij voornamenlijk om ging was de manier, de code die er stond was puur als voorbeeld genomen.
de uiteindelijke functie hiervan heb ik gebruikt in een registratie script.
Hier geef ik momenteel 2 variable mee met de 3 functies. (controleer email, controleer username, controleer wachtwoord). Deze doen hoen werk en zodra er iets fout gaat voegen zij dit toe aan de meegegeven variables (arrays).
Dan controleer ik of er iets in deze arrays staat, zoja,
laat dan zien wat er fout is gegaan, maak de labels netjes en mooi rood en klaar.
Dat kan inderdaad wel een array zijn.
Maar je hebt hier over 3 heel verschillende dingen (mail / naam / ww).
Dus splits het gewoon op. Single-Responseability gaat je uiteindelijk meer werk en problemen opleveren...
Daarnaast laat strlen(); ook gewoon 6 spaties door of 6 ./$?# e.d.
Zolas ik je al eerder heb aangegeven heb je andere functies om ook de inhoud van de string te controleren. Klein voorbeeldje in php5 / OOP met reguliere expressies.
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
56
57
58
59
60
61
62
63
64
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
56
57
58
59
60
61
62
63
64
<?php
final class validate{
/**
* string
* matches all chars except ASCII (0-31) spaces allowed.
* because spaces are allowed optional minimul length check
*
* @final
* @static
* @access public
* @see http://www.asciitable.com/
* @param string $string
* @param int $min
* @return bool
*/
final static public function string($string, $min=0){
if(self::length(str_replace(' ', '', $string), $min)){
return (bool) preg_match('~^[^\x-\x1F]+$~', $string);
}
return false;
}
/**
* password
* Matches alphanumberic + some chars, no spaces. ASCII (33-126) no spaces
*
* @final
* @static
* @access public
* @see http://www.asciitable.com/
* @param string $string
* @return bool
*/
final static public function password($string){
return (bool) preg_match('~^[\41-\176]+$~', $string);
}
/**
* email
* Match e-mail address by regex.
*
* @final
* @static
* @access public
* @param string $string
* @return bool
*/
final static public function email($string){
return (bool) preg_match('~^[a-z0-9_\.-]+@([a-z0-9]+([\-]+[a-z0-9]+)*\.)+[a-z]{2,7}$~iD', $string);
}
/**
* length
* check if string length is longer then $min.
*
* @static
* @access private
* @param string $string
* @param int $min
* @return bool
*/
static private function length($string, $min=0){
return (strlen((string) $string) > $min) ? true : false;
}
}
?>
final class validate{
/**
* string
* matches all chars except ASCII (0-31) spaces allowed.
* because spaces are allowed optional minimul length check
*
* @final
* @static
* @access public
* @see http://www.asciitable.com/
* @param string $string
* @param int $min
* @return bool
*/
final static public function string($string, $min=0){
if(self::length(str_replace(' ', '', $string), $min)){
return (bool) preg_match('~^[^\x-\x1F]+$~', $string);
}
return false;
}
/**
* password
* Matches alphanumberic + some chars, no spaces. ASCII (33-126) no spaces
*
* @final
* @static
* @access public
* @see http://www.asciitable.com/
* @param string $string
* @return bool
*/
final static public function password($string){
return (bool) preg_match('~^[\41-\176]+$~', $string);
}
/**
* Match e-mail address by regex.
*
* @final
* @static
* @access public
* @param string $string
* @return bool
*/
final static public function email($string){
return (bool) preg_match('~^[a-z0-9_\.-]+@([a-z0-9]+([\-]+[a-z0-9]+)*\.)+[a-z]{2,7}$~iD', $string);
}
/**
* length
* check if string length is longer then $min.
*
* @static
* @access private
* @param string $string
* @param int $min
* @return bool
*/
static private function length($string, $min=0){
return (strlen((string) $string) > $min) ? true : false;
}
}
?>
EDIT:
aan te roepen als:
Code (php)
echo var_dump(); kan weg natuurlijk is alleen om even de uitkomst naar het scherm te spugen....
Gewijzigd op 01/01/1970 01:00:00 door Lode
gewoon class includen en hergebruiken...