variabel denken
Met variabelen kun je meer dan er over het algemeen over gedacht wordt. Een paar extra mogelijkheden.
Gesponsorde koppelingen
Inhoudsopgave
18 reacties op 'variabel denken'
Gesponsorde koppelingen
Leuke titel!
Alleen waarom vertel je het als je al zegt dat je het niet moet gaan gebruiken? Het is leuk en handig om te weten, vooral die nieuwe closures zijn erg interessant, alleen plaatst dan wel een hoofdstuk wat dan een betere oplossing is.
Ik zou dus nog een hoofdstuk voor het Nawoord maken waarin je betere voorbeelden laat zien hoe het moet.
Ook zou ik bij variabele variabelen deel 1 en deel 2 omdraaien. Deel 2 is wat beter te begrijpen dan deel 1 in dit geval.
Dit vind ik niet juist. Je hebt alsnog 2 variabele, eigenlijk is $$var een afkorting van ${$var} en je maakt een hele nieuwe variabele aan. Het is niet zo dat je in 1 variabele 2 waardes opslaat.
Alleen waarom vertel je het als je al zegt dat je het niet moet gaan gebruiken? Het is leuk en handig om te weten, vooral die nieuwe closures zijn erg interessant, alleen plaatst dan wel een hoofdstuk wat dan een betere oplossing is.
Ik zou dus nog een hoofdstuk voor het Nawoord maken waarin je betere voorbeelden laat zien hoe het moet.
Ook zou ik bij variabele variabelen deel 1 en deel 2 omdraaien. Deel 2 is wat beter te begrijpen dan deel 1 in dit geval.
Variabele variabele - deel 2:
Er is ook een manier om in 1 variabele 2 waarden op te slaan.
Dit vind ik niet juist. Je hebt alsnog 2 variabele, eigenlijk is $$var een afkorting van ${$var} en je maakt een hele nieuwe variabele aan. Het is niet zo dat je in 1 variabele 2 waardes opslaat.
ik raad deze methoden in veel situaties af omdat er vaak betere alternatieven zijn. zo kun je mijn snippet met functies beter vervangen door een switch(). ik zal eens kijken naar een mooi voorbeeld.
hoezo vindt je deel 2 makkelijker als deel 1? ik dacht juist andersom...
je slaat twee waardes op onder dezelfde naam. hierdoor kun je twee waardes aanroepen onder dezelfde naam, waardoor het lijkt alsof je twee waardes in een variabele hebt. wat dat betreft is dat makkelijker dan bv een array; je kunt met 1 gegeven meerdere dingen uitlezen.
hoezo vindt je deel 2 makkelijker als deel 1? ik dacht juist andersom...
Quote:
Dit vind ik niet juist. Je hebt alsnog 2 variabele, eigenlijk is $$var een afkorting van ${$var} en je maakt een hele nieuwe variabele aan. Het is niet zo dat je in 1 variabele 2 waardes opslaat.
je slaat twee waardes op onder dezelfde naam. hierdoor kun je twee waardes aanroepen onder dezelfde naam, waardoor het lijkt alsof je twee waardes in een variabele hebt. wat dat betreft is dat makkelijker dan bv een array; je kunt met 1 gegeven meerdere dingen uitlezen.
bedankt!
er komt een klein voorbeeldje aan, ben er mee bezig. Maar dat is dan ook het enige voorbeeld wat ik zo kon bedenken.
Maar OOP kun je op deze manier ook gebruiken. OOP ken ik alleen de allermakkelijkste basis van, dus heb ik besloten dit niet erbij te betrekken. Maar methods kun je sowieso ook variabel aanroepen
er komt een klein voorbeeldje aan, ben er mee bezig. Maar dat is dan ook het enige voorbeeld wat ik zo kon bedenken.
Maar OOP kun je op deze manier ook gebruiken. OOP ken ik alleen de allermakkelijkste basis van, dus heb ik besloten dit niet erbij te betrekken. Maar methods kun je sowieso ook variabel aanroepen
Variabele in OO gebruiken is gewoon eigenlijk hetzelfde als variabele in combinatie met closures of variabele variabele:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
class Example
{
public $foo = 'foo';
protected $bar_var = 'hello bar';
protected $world_var = 'hello world';
public function foo()
{
return 'Hello foo';
}
public function get( $var )
{
if( isset($this->{$var.'_var'}) )
return $this->{$var.'_var'};
}
}
$example = new Example;
echo $example->{$example->foo}(); // geeft 'hello foo'
echo $example->get( 'bar' ); // geeft 'hello bar'
$str = 'world';
echo $example->get( $str ); // geeft 'hello world'
?>
class Example
{
public $foo = 'foo';
protected $bar_var = 'hello bar';
protected $world_var = 'hello world';
public function foo()
{
return 'Hello foo';
}
public function get( $var )
{
if( isset($this->{$var.'_var'}) )
return $this->{$var.'_var'};
}
}
$example = new Example;
echo $example->{$example->foo}(); // geeft 'hello foo'
echo $example->get( 'bar' ); // geeft 'hello bar'
$str = 'world';
echo $example->get( $str ); // geeft 'hello world'
?>
@jeroen, regel 20 is de leukste en het een samenvatting van deze hele tutorial:
$example->{$example->foo}();
Laten we eerst uitzoeken wat er tussen {} staat:
$example->foo
Dit haalt de publieke var foo uit de example class, deze returned dus foo, omdat dat de waarde is van foo.
Vervolgens krijg je:
$example->foo();
En dan wordt de method foo aangeroepen, die returned hello foo.
Het voorbeeld is tja precies wat ik had gedacht. Variabele variabele zijn eigenlijk nergens handig voor. Een multidemensionale array is in dit geval voor semantischer en beter.
Het is leuk om te weten maar het voegt niks toe aan hoe je met PHP omgaat. Behalve dan het werken met {} wat in sommige gevallen wel handig is.
Maar dat doet er niets af van het feit dat dit een weer een tutorial is die hier thuis hoort! Eentje die goed is, goed uitgelegd en met juiste technieken.
$example->{$example->foo}();
Laten we eerst uitzoeken wat er tussen {} staat:
$example->foo
Dit haalt de publieke var foo uit de example class, deze returned dus foo, omdat dat de waarde is van foo.
Vervolgens krijg je:
$example->foo();
En dan wordt de method foo aangeroepen, die returned hello foo.
Het voorbeeld is tja precies wat ik had gedacht. Variabele variabele zijn eigenlijk nergens handig voor. Een multidemensionale array is in dit geval voor semantischer en beter.
Het is leuk om te weten maar het voegt niks toe aan hoe je met PHP omgaat. Behalve dan het werken met {} wat in sommige gevallen wel handig is.
Maar dat doet er niets af van het feit dat dit een weer een tutorial is die hier thuis hoort! Eentje die goed is, goed uitgelegd en met juiste technieken.
Ik zie wel een nuttige toepassing: callbacks.
De bedoeling is hier dat je een functie hebt, eventueel niet door jezelf gemaakt, waar je ook best niet aan prutst.
De functie geeft de scripter wel de kans om, tijdens het doorlopen van de functie, een eigengemaakte functie te laten aanroepen.
Ik kom niet direct op een goed voorbeeld, maar stel dat een standaardfuntie van alles moet berekenen, maar midden in de functie een geformatteerde string nodig heeft, die de scripter vrij kan kiezen, maar wel gebaseerd op voorlopige resultaten ...
Je kan als scripter die standaardfunctie zelf aanpassen, maar dat is niet de bedoeling. Wel, dat kan op een dergelijke manier:
Javascript gebruikt constant callbacks; in javascript zijn we het gewoon, in php ligt dat wat minder voor de hand.
De bedoeling is hier dat je een functie hebt, eventueel niet door jezelf gemaakt, waar je ook best niet aan prutst.
De functie geeft de scripter wel de kans om, tijdens het doorlopen van de functie, een eigengemaakte functie te laten aanroepen.
Ik kom niet direct op een goed voorbeeld, maar stel dat een standaardfuntie van alles moet berekenen, maar midden in de functie een geformatteerde string nodig heeft, die de scripter vrij kan kiezen, maar wel gebaseerd op voorlopige resultaten ...
Je kan als scripter die standaardfunctie zelf aanpassen, maar dat is niet de bedoeling. Wel, dat kan op een dergelijke manier:
Code (php)
Javascript gebruikt constant callbacks; in javascript zijn we het gewoon, in php ligt dat wat minder voor de hand.
Ik heb een voorbeeld gevonden.
Kijk eens naar mijn post hier:
http://www.phphulp.nl/php/forum/topic/pagination-function/81880/#581735
De bedoeling daar is dus simpel. je blijft best van mijn class af, maar je kunt wel een eigengemaakte functie maken waarin je een URL codeert, op basis van het berekende paginanummer. De class gaat dan verder met deze URL en levert later een eindresultaat.
Die class kan je dan ongewijzigd hergebruiken, terwijl de kans wel groot is dat de URL die je wil coderen telkens verschillend zal zijn.
Nu, er zijn in php altijd alternatieven. callbacks oproepen kan ook op deze wijze:
http://php.net/manual/en/function.call-user-func.php
Kijk eens naar mijn post hier:
http://www.phphulp.nl/php/forum/topic/pagination-function/81880/#581735
De bedoeling daar is dus simpel. je blijft best van mijn class af, maar je kunt wel een eigengemaakte functie maken waarin je een URL codeert, op basis van het berekende paginanummer. De class gaat dan verder met deze URL en levert later een eindresultaat.
Die class kan je dan ongewijzigd hergebruiken, terwijl de kans wel groot is dat de URL die je wil coderen telkens verschillend zal zijn.
Nu, er zijn in php altijd alternatieven. callbacks oproepen kan ook op deze wijze:
http://php.net/manual/en/function.call-user-func.php
Om te reageren heb je een account nodig en je moet ingelogd zijn.
- Details
Door:
Jeroen vd- 4 maanden geleden
- 1.878 x bekeken
- Labels
php, variabelen
- PHP tutorials opties
- PHP algemeen
- Nieuwste PHP tutorials
- PHP tutorial toevoegen


PHP hulp
0 seconden vanaf nu