Skocz do zawartości

[PHP] funkcja zwracająca obiekt


ktoś

Polecane posty

Piszę sobie jakąś funkcję w php (w założeniach php5). Zależy mi na tym, żeby otrzymać wynik w postaci obiektu zdefiniowanej przeze mnie klasy.

Niby problem nie jest poważny, ponieważ dostępne są referencje.

 

Mogę podczas wywoływania funkcji przekazać jej referencję do utworzonego wcześniej obiektu, a samej funkcji kazać go tylko zmodyfikować, jednak uważam to za rozwiązanie mało eleganckie. O referencji trzeba pamiętać, poza tym zwracanie wyniku przez modyfikację parametrów jest raczej nietypowe dla funkcji.

function moja_funkcja () {
$obj->zmienna='cokolwiek;
}
$obj = new moja_klasa;
moja_funkcja (&$obj);

 

Jeżeli obiekt składa się z samych zmiennych, to wszystko działa.Tylko, że do tego wystarczy tablica asocjacyjna, a ja chcę, żeby to miało rówież funkcje. A w tedy ten kod się _po_prostu_ nie wykonuje.

Link do komentarza
Udostępnij na innych stronach

Nie wiem co robisz nie tak... może to dla tego, że nie pokazałeś budowy swojej klasy.

Przynajmniej u mnie taki kod działa jak tu zamieściłem:

 

PHP5

 

<?
class moja_klasa {
       public $zmienna;

       public function testfuncinclass(){
               return ' cokolwiek z klasy  ';        
       }
}


function moja_funkcja()
{
      $a = new moja_klasa();
      $a->zmienna = 'cokolwiek';
      return $a;
}



$obj = moja_funkcja ();
print($obj->zmienna);
print($obj->testfuncinclass());
?>

 

 

Pozdrawiam

Prawdziwy programista wiesza sie wraz ze swoim programem.

Link do komentarza
Udostępnij na innych stronach

Dziwne... Już działa.

 

Zdezorientowało mnie to, że nie było żadnej informacji o błędach. Złe wpisanie przecinka, średnika itp kończyło się zawsze wywaleniem stosownego komunikatu, lub przerywało wykonywanie kodu na błędnej instrukcji, a jak pisałem poprzedniego posta bez żadnego błędu nie wykonało się nawet zaczynające kod echo '1'

Nie zapisałem tamtej deklaracji klasy, ale teraz dopisałem po nagłówku funkcji średnik, efekt był taki sam jak w tedy.

 

W każdym razie dzięki :)

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...