[PHP] $$zmienna a obiekty

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Keph
Nowy
Nowy
Posty: 23
Rejestracja: śr gru 06, 2006 10:48 pm
Kontakt:

[PHP] $$zmienna a obiekty

Post autor: Keph »

Witam,

Jak wiadomo, PHP ma taką sprytną konstrukcję: $$zmienna, która pozwala stworzyć zmienną o nazwie wczytanej z innej zmiennej. Na codzień to działa, jednak w przypadku próby zadziałania w taki sposób ze zmienną przynależną do obiektu ($obiekt->zmienna) ten trik już nie działa. Czy jest jakiś sposób na zmuszenie tego do działania w sposób analogiczny do nie-obiektowego?

Można to niby zrobić naokoło, przez zmienne pomocnicze, ale - już chociażby z czystej ciekawości - interesuje mnie rozwiązanie tego problemu ;)

Pozdrawiam,
Keph
Keph
Nowy
Nowy
Posty: 23
Rejestracja: śr gru 06, 2006 10:48 pm
Kontakt:

Re: [PHP] $$zmienna a obiekty

Post autor: Keph »

Meh, odkryłem, że błąd (idiotyczny! ;)) tkwił gdzieś indziej i jeden z moich pomysłów był dobry. Jeśli kogoś interesuje rozwiązanie, służę uprzejmie:

[php]<?php
$obiekt->{$zmienna};
?>[/php]

Pozdrawiam ;)
Keph
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

Re: [PHP] $$zmienna a obiekty

Post autor: 123456 »

Metody magiczne __get i __set służą do tego...
[php]<?php
class Klasa
{
public $zmienna1 = 'wartosc 1';

public function __set($nazwa, $wartosc)
{
$this->$nazwa = $wartosc;
}
public function __get($nazwa)
{
return $nazwa;
}
}

$obj = new Klasa;

$obj->zmienna2 = 'wartosc 2';
$obj->zmienna3 = 'wartosc 3';

print $obj->zmienna1;
print $obj->zmienna2;
print $obj->zmienna3;
?>[/php]
ODPOWIEDZ