webForumDet fria alternativet

Komma åt klasser via variabla variabler

PHPur PHP

9 svar · 250 visningar · startad av GrodanBoll

Medlem sedan sep. 2001788 inlägg
Frågan#1

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 />";
Medlem sedan sep. 2002366 inlägg
#2

Är det detta du vill göra?

$b = new kalle();
$ggg = $b -> getKalle();
echo "Meeeeeen: ".$ggg.".<br />";
Medlem sedan okt. 2001166 inlägg
#3
class kalle
{
    var $kalle1 = 1;
    var $kalle2 = 2;
    
    function getKalle ()
    {
        return $this->kalle1;
    
    }

}

$b = new kalle();
$ggg = $b->getKalle();
echo "Meeeeeen: ".$ggg.".<br />";
Medlem sedan sep. 2001788 inlägg
#4

Nope, jag vill använda mig av variabla variabler, se http://se.php.net/manual/sv/language.variables.variable.php

Medlem sedan aug. 20002 975 inlägg
#5

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 />";
Medlem sedan sep. 2001788 inlägg
#6

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? ;)

Medlem sedan sep. 2001788 inlägg
#7

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.

Medlem sedan aug. 20002 975 inlägg
#8

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 />";
Medlem sedan sep. 20011 086 inlägg
#9

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.

Medlem sedan sep. 2001788 inlägg
#10

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. :birp

138 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)