Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wywołanie obiektu w obiekcie.. z zewnątrz - problem
japolak
post
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Łódzkie

Ostrzeżenie: (0%)
-----


Witam.. mam taki kod:

fragment pliku strona.php:
  1.  
  2.  
  3. class strona {
  4. public $tytul;
  5. public $zawartosc;
  6.  
  7. public function __set($nazwa,$wartosc)
  8. {
  9. $this->$nazwa=$wartosc;
  10. }
  11.  
  12. public function wzor_obranowania(){?>
  13. echo$this->tytul;
  14. echo $this->zawartosc;
  15.  
  16. }
  17.  
  18. public function wyswietl_dodaj_karte()
  19. {
  20.  
  21. .... costam....
  22. }
  23.  
  24. }
  25.  



nastepny plik wywolujacy obiekty z klasy (fragment):

  1.  
  2. $wyswietl= new strona();
  3.  
  4. $wyswietl->wyswietl();
  5. echo"<br>";
  6. $wyswietl->tytul="Rejestracja nowego klienta";
  7. $wyswietl->zawartosc=wyswietl_dodaj_karte();
  8. $wyswietl->wzor_obranowania();
  9.  
  10.  
  11.  
  12. $wyswietl->wyswietl_stopke();
  13.  
  14.  



i wyskakuje mi error:
Fatal error: Call to undefined function wyswietl_dodaj_karte() in C:\xampp\htdocs\praca_inz\test.php on line 7

co jest nie tak?? jak zrobic aby funkcja wzor_obranowania byla elastyczna i mogla w sobie wyswietlac tez inne fukcje..

Ten post edytował japolak 5.11.2009, 22:30:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Twoim problemem jest to, że wszystko masz w jednej klasie i nie widzisz co jest czym. Gubisz się między modelem, kontrolerem i widokiem. Widok to wzor_obranowania() i jego nawet nie tykaj. To co masz zrobić z zawartością definiujesz wewnątrz metody wyswietl_dodaj_karte() i wywołujesz ją z odpowiednimi parametrami lub używasz $this jeśli tylko zapisujesz do zmiennej $zawartość poprzez $wyswietl->wyswietl_dodaj_karte($parametry), ale broń boże nie wyświetlasz tego co robi! Od tego masz metodę widoku wzor_obranowania() bo to ona wyświetla całość tabelki. Podziel sobie kod na logiczniejsze działy jeśli chcesz mieć całość w jednej i zrób bloki kodu, które funkcjonalnie będą równe modelowi, kontrolerowi oraz widokowi/-om. Teraz masz bowiem coś, co jest jednocześnie metodą modelu (kontrolera? ki czort wie co robisz tak naprawdę wewnątrz więc nie mam pojęcia gdzie to wcisnąć), ale jednocześnie ma być widokiem bo wyświetla dane. Tak się nie robi i dlatego masz problem z wciśnięciem tego. Możesz dopisać do zmiennej zawartość efekt tej metody lub nadpisać ją, ale nie tak jak Ty to robisz tylko jak Ci pokazałem w drugim przypadku. Po drodze jednak pewnie zamiast nadpisywać Ci dane - dopisuje je, przez co kod się wewnątrz wydłuża.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 00:01