Beste,

Ik ben een cursus van lynda.com PHP beyond the basic aan het volgen en daarin stond dat als je dit script uitvoerd:


<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8" />
	<title>Variable Variables</title>
</head>
<body>
<?php
$a = "Hello";
$hello = "Hello everyone.";
echo $a . "<br />";
echo $hello. "<br />";

echo $$a."<br />";

?>

</body>
</html>


je volgend resultaat moet krijgen:

Hello
Hello everyone.
Hello everyone.

maar ik krijg een melding:
Hello
Hello everyone.

Notice Undefined variable: Hello In /Users/naam/Sites/btb_sandbox/variable_variable.php on line 14

Is dit omdat zei een vroeger versie van PHP gebruiken ? V5.2.6
en ik gebruik v 7.0.2 ?

Met vriendelijke groeten
Johan
Je gebruikt Hello en hello, hoofdletter en kleine letter.
Maak ze allen hetzelfde.
- SanThe - op 28/02/2016 23:57:22

Je gebruikt Hello en hello, hoofdletter en kleine letter.
Maak ze allen hetzelfde.


Ik zien geen variabele $Hello hoor San The?

Ik zie wel een $$a. dat zal waarschijnlijk een $a moeten zijn.

[size=xsmall]Toevoeging op 29/02/2016 00:05:52:[/size]

Oh en de . achter $hello daar moet wel een spatie tussen lijkt me. dus:

echo $hello . "<br />";


Overigens zie ik nu inderdaad in de foutmelding ook Hello staan met een hoofdletter.
Frank Nietbelangrijk op 29/02/2016 00:03:06
Oh en de . achter $hello daar moet wel een spatie tussen lijkt me. dus:

Waarom zou dat moeten? :/

Het is dan wellicht beter leesbaar maar het is niet verplicht.
<?php
$a = "Hello";
$hello = "Hello everyone.";
echo $$a; // is dus echo $Hello en die bestaat niet (met hoofdletter)
?>
Leuk als voorbeeld voor de mogelijkheden van PHP om in een cursus te laten zien, maar in de praktijk zou je dit niet moeten toepassen.

Je script wordt er behoorlijk onduidelijke door.

De enige keren dat ik me herinner dit te hebben toegepast de afgelopen 10+ jaar, is bij fouten met copy-paste van code waarbij een $ teveel bleef staan.
- SanThe - op 29/02/2016 08:15:50

<?php
$a = "Hello";
$hello = "Hello everyone.";
echo $$a; // is dus echo $Hello en die bestaat niet (met hoofdletter)
?>


Dat wist ik niet eens :-). Maar het valt wat mij betreft onder "zinloos geweld" dus vergeet ik dit direct maar weer. @Thomas: your right!
Frank Nietbelangrijk op 29/02/2016 10:00:49

... Maar het valt wat mij betreft onder "zinloos geweld" ...

Helemaal mee eens.

Het is altijd lastig om een "juist gebruik" en het "nut" te illustreren met een haast triviaal voorbeeld.

Variabele namen van variabelen kunnen handig zijn. Bijvoorbeeld als een klasse- of methodenaam bepaald moet worden via configuratie of een of andere berekening.
<?php
// bepaal / bereken driver
$driverClass = ...;
$driver = new $driverClass();

// ...

// bepaal aan te roepen methode
$method = ...;
$someObject->$method();
?>

Deze laatste variant is vergelijkbaar met de PHP functie call_user_func().

Het feit dat deze constructies (nog steeds) bestaan geeft ook (min of meer) aan dat deze een zeker bestaansrecht hebben. Wil niet zeggen dat je deze maar moet gebruiken waar mogelijk. Dit moet een weloverwogen keuze zijn.
Thanks San The :) ik had net ook ontdekt ;) ja php pas begonnen vandaar soms zit het in de kleine details ;)
Maar zo leer ik wel waar ik later moet op kijken wanneer er fouten zijn


[size=xsmall]Toevoeging op 01/03/2016 19:56:06:[/size]

Johan Cuypers op 01/03/2016 19:53:09

Thanks San The en Frank :) ik had net ook ontdekt ;) ja php pas begonnen vandaar soms zit het in de kleine details ;)
Maar zo leer ik wel waar ik later moet op kijken wanneer er fouten zijn



Reageren