abonnement bol.com Unibet Coolblue
pi_30657140
Gebruik jij Call-time pass-by-reference? of heb jij hiervoor een andere oplossing?

Vandaag bekeek ik weer even een oude website waarbij ik een functie data laat terug sturen met een false/true en extra gegevens maar kreeg een error dat dit normaal niet in PHP te gebruiken is. (tenzij je de optie in PHP.ini heb gezet)

bv als functie
1
2
3
4
5
6
7
8
<?php
function test(&amp;$test)
{
    
$test = $test . &quot;nog iets&quot;;

    return
false;
}
?>


en door het als volgt aan te roepen.

1
2
3
4
5
6
7
8
9
10
11
<?

if (test($test))
{
     // true
}
else
{
    echo "foutje gevonden: " . $test;
}
?>


zonder die setting krijg ik deze error
quote:
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in *****\index.php on line 277
hebben jullie hier ook een andere oplossing voor?
Just say hi!
pi_30657324
Volgens mij krijg je die waarschuwing alleen als je bij de aanroep van de functie (call-time) een parameter by reference probeert door te geven. Als je de functie-parameter declareert met pass-by-reference en bij de aanroep geen pass-by-reference gebruikt dan is er niets aan de hand.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function test1($s) {
   $s = 'test1';
   return false;
}
function test2(&$s) {
   $s = 'test2';
   return false;
}

$s = '';

// Deze geeft een warning
if (!test1(&$s)) echo $s;

// Deze geeft een warning
if (!test2(&$s)) echo $s;

// Deze geeft geen warning
if (!test2($s)) echo $s;
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_30657683
idd was die & nog vergeten.. maar is daar een andere goede oplossing voor?
Just say hi!
pi_30657702
Wat wil je doen dan?
pi_30657724
ik geef wel eens data door aan een functie, die doet er wat mee en verifieert het .. geeft dan een true of false terug met eventueel de gewijzigde data...

@Beiden: jullie zijn er ook vroeg bij vandaag.

@Roonaan: heb je eens zin om te bellen over dat projectje van die persoon? u know! ?
Just say hi!
pi_30657866
Mail maar ff. Ik zit nu in de rats met wat deadlines, hence maybe dat ik wat vroeg aan het coden ben al.
pi_30657932
quote:
Op zaterdag 17 september 2005 10:23 schreef Chandler het volgende:
ik geef wel eens data door aan een functie, die doet er wat mee en verifieert het .. geeft dan een true of false terug met eventueel de gewijzigde data...

@Beiden: jullie zijn er ook vroeg bij vandaag.

@Roonaan: heb je eens zin om te bellen over dat projectje van die persoon? u know! ?
Als je die & in de functie zet en niet in de aanroep van de functie, dan is er toch niets aan de hand?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_30657985
en het resultaat is het zelfde dan?

@Roonaan: Ik mail je wel ff.
Just say hi!
pi_30658011
Als de & in de function signature staat dan moet het argument altijd by reference zijn. Dat is het enige. Maar aangezien the other way around niet meer echt gesupport wordt, is het alles of niets.
pi_30658050
Misschien stom van mij maar ik begrijp het doel wel... het mee en terug sturen van de data maar wat bedoelen ze met by reference? is het mogelijk dat je hier een 'lééken' uitleg bij geeft
Just say hi!
pi_30658130
Variabelen worden op een bepaald address opgeslagen in het geheugen.
Als je een variabele by value (byVal in vb) meegeeft maakt hij een kopie van de inhoud en plaatst deze in de argument stack van de functie. Als je een variabele by reference (byRef) meegeeft, zet hij alleen het address op de callstack.
pi_30660326
Volgens mij begrijp ik het.
Just say hi!
abonnement bol.com Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')