Är det detta du vill göra?
$b = new kalle();
$ggg = $b -> getKalle();
echo "Meeeeeen: ".$ggg.".<br />";
9 svar · 257 visningar · startad av GrodanBoll
Hej
Jag får inte nedanstående kod att fungera. Förstår inte varför.
class kalle
{
var $kalle1 = 1;
var $kalle2 = 2;
function getKalle ()
{
return $this -> kalle1;
}
}
$b = new kalle();
$ggg = "b -> getKalle ()";
echo "Meeeeeen: ".${$ggg}.".<br />";
Är det detta du vill göra?
$b = new kalle();
$ggg = $b -> getKalle();
echo "Meeeeeen: ".$ggg.".<br />";
class kalle
{
var $kalle1 = 1;
var $kalle2 = 2;
function getKalle ()
{
return $this->kalle1;
}
}
$b = new kalle();
$ggg = $b->getKalle();
echo "Meeeeeen: ".$ggg.".<br />";
Nope, jag vill använda mig av variabla variabler, se http://se.php.net/manual/sv/language.variables.variable.php
Då måste ditt värde på $kalle1 ha ett värde som är en sträng som inte får börja med siffra, för $1 är inget godkänt variabelnamn.
Det här fungerar:
class kalle
{
var $kalle1 = 'hej';
var $kalle2 = 'hopp';
function getKalle ()
{
return $this -> kalle1;
}
}
$hej = 'Ja';
$hopp = 'Nej';
$b = new kalle();
$ggg = $b->getKalle();
echo "Meeeeeen: ".$$ggg.".<br />";
Nja Matte
Jag vill ha själva
$ggg = "b->getKalle()";
Och sen att jag kan komma åt den via
echo "Meeeeeen: ".${$ggg}.".<br />";
Jag vet nämligen inte förrän vid run-time vilken funktion jag ska fråga efter.
Och istället vör att använda en oändligt, känns det soom iaf, antal if-satser så hade det varit najs med att använda variabla variabler istället.
Sen förstår jag inte riktigt vad du menar att jag måste ha en sträng i $kalle1 för. Allt jag vill ha e ju värdet därifrån.
Missförstod jag dig eller du mig?
Kan väl tillägga att jag inte kan komma åt funktioner utan endast värden i variabler tydligen.
Varför är det så?
// Test 1
function viktor ()
{
$ville = 23;
return $ville;
}
$hmm = "viktor ()";
echo "Testar att anropa funktionen 'viktor': ".${$hmm}."<br />";
// Test 2
$value1 = 32;
$hmm2 = "value1";
echo "Testar att få tag i värdet från variablen 'value1': ".${$hmm2}."<br />";
Alltså Test1 fungerar inte, men Test 2 fungerar utmärkt.
Du får göra något på det här hållet:
class kalle
{
var $kalle1 = 1;
var $kalle2 = 2;
function getKalle ()
{
return $this -> kalle1;
}
}
$b = new kalle();
$ggg = "b -> getKalle ()";
eval('$var = $'.$ggg.';');
echo "Meeeeeen: ".$var.".<br />";
Re: Komma åt klasser via variabla variabler
$ggg = "b -> getKalle";
echo "Meeeeeen: ". $ggg() .".<br />";
funkar iaf för "vanliga" funktioner, vet inte om det funkar för funktioner i klasser.
/edit:
$ggg = '$b -> getKalle';
n du ju testa om det andra inte funkar.
Jepp Pimme upptäckte det sedan, tack för svaret.
Matte, über.
Kanon, jag får ta det det hållet istället men det gör så att allt funkar på det sättet jag vill.
Bugar och tackar.