variabel denken

Door Jeroen VD, 10 jaar geleden, 8.424x bekeken

Met variabelen kun je meer dan er over het algemeen over gedacht wordt. Een paar extra mogelijkheden.

Gesponsorde koppelingen

Inhoudsopgave

  1. Inleiding
  2. Variabele variabelen
  3. Een voorbeeld
  4. Variabele variabelen - deel 2
  5. Variabele functies
  6. Nawoord

 

Er zijn 18 reacties op 'Variabel denken'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Wouter J
Wouter J
10 jaar geleden
 
0 +1 -0 -1
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.

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.
Jeroen VD
Jeroen VD
10 jaar geleden
 
0 +1 -0 -1
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...

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.
Ozzie PHP
Ozzie PHP
10 jaar geleden
 
0 +1 -0 -1
Leuke tutorial! En leuke titel ook, complimenten daarvoor!

Maar nu ben ik wel benieuwd. Zijn er praktijksituaties te bedenken wanneer je dit zou kunnen gebruiken?
Jeroen VD
Jeroen VD
10 jaar geleden
 
0 +1 -0 -1
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
Ozzie PHP
Ozzie PHP
10 jaar geleden
 
0 +1 -0 -1
Oké, ben benieuwd naar het voorbeeldje :)
Wouter J
Wouter J
10 jaar geleden
 
0 +1 -0 -1
Variabele in OO gebruiken is gewoon eigenlijk hetzelfde als variabele in combinatie met closures of variabele variabele:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'
?>
Jeroen VD
Jeroen VD
10 jaar geleden
 
0 +1 -0 -1
er is een voorbeeldje toegevoegd, het laat zien wat je er mee kunt.

@wouter j, zoals ik al zei, ik weet niet veel van OOP. jouw voorbeeld snap ik bijna helemaal, alleen regel 20 niet. maar een mooie bijdrage aan de reacties!
Wouter J
Wouter J
10 jaar geleden
 
0 +1 -0 -1
@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.
Jeroen VD
Jeroen VD
10 jaar geleden
 
0 +1 -0 -1
Ik wist niet dat je properties ook direct kan aanroepen. Zoveel weet ik dus van OOP.

Maar bedankt voor de positieve reacties! Dit was mijn eerste tutorial over een onderwerp waar eigenlijk niks over te vinden is.
Kris Peeters
Kris Peeters
10 jaar geleden
 
0 +1 -0 -1
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
function standardfunction($callback) {
  ...

  $output = $callback($data);
  ...

  return $output;
}

// eigengemaakte functie
function format_data($data) {
 ...

  return $value;
}


$a = standardfunction('format_data');

?>


Javascript gebruikt constant callbacks; in javascript zijn we het gewoon, in php ligt dat wat minder voor de hand.
Jeroen VD
Jeroen VD
10 jaar geleden
 
0 +1 -0 -1
Dit is inderdaad iets bruikbaars, maar het moet dan net zo uitkomen dat je het kunt gebruiken. En dat is lang niet altijd
Kris Peeters
Kris Peeters
10 jaar geleden
 
0 +1 -0 -1
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
Jacco Engel
Jacco Engel
10 jaar geleden
 
0 +1 -0 -1
Even vervelend doen :P :
vond een klein slordigheidje :)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    function huis()
    {

        echo 'dit is een huis';
    }
        
    function
boom()
    {

        echo 'dit is een boom';
    }

        
    $var = 'boom';
    echo $var();
[
/code]

Of je aanroep niet echoen of in je functie niet ;)
Jeroen VD
Jeroen VD
10 jaar geleden
 
0 +1 -0 -1
inderdaad, dit is fout. pas het even aan
Jeroen VD
Jeroen VD
10 jaar geleden
 
1 +1 -0 -1
ik kan het niet meer aanpassen, is meer dan 7 dagen geleden online gezet
Niels K
Niels K
10 jaar geleden
 
1 +1 -0 -1
Ik heb het voor je aangepast Jeroen.
Jeroen VD
Jeroen VD
10 jaar geleden
 
0 +1 -0 -1
Bedankt ^^
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Albert de Wit
Albert de Wit
10 jaar geleden
 
0 +1 -0 -1
dit vind ik zo leuk aan php. je kunt het altijd makkelijk in een moeilijke manier maken, zeg maar, je schrijft het en begrijpt het en een ander kan het modificeren door een $i via een textveld aan te passen.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. Inleiding
  2. Variabele variabelen
  3. Een voorbeeld
  4. Variabele variabelen - deel 2
  5. Variabele functies
  6. Nawoord

Labels

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.