Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kozystanie z metot obiektu w innym obiekcie
Forum PHP.pl > Forum > PHP
squid
mam sobie klase zalozmy:
  1. <?php
  2.  
  3. class nazwa {
  4. var $templateHandler;
  5. ...
  6. mlist ()
  7. {
  8. ...
  9. $templateHandler->smarty->assign( 'music',  $m);
  10. ...
  11. }
  12. }
  13.  
  14. ?>

wszesniej, w skrypcie wywolujacym, przed stworzeniem obiektu tej klasy robie tak:
  1. <?php
  2.  
  3. $smarty = new Smarty;
  4. $a = new nazwa();
  5. $a->templateHandler = &$smarty;
  6.  
  7. ?>


dostaje pikny komunikat
Cytat
Fatal error: Call to a member function on a non-object in D:\htdocs\...\*.php on line <numer lini>


no i co w takim wypadku moge zrobic kiedy chcialbym wywolac metode obiektu smarty w moim obikcie? kidys probowalem przez argument z referencja podac i dzialalo ale takie rozwiazanie jest dla mnie malo wygodne, macie jakies inne propozycje?
bregovic
A czy nie łatwiej by ci było extend'ować smarty? Co dokładnie chcesz osiągnąć?
pafka
Chyba masz 2 bledy w tej linii ...
  1. <?php
  2. ...
  3. $templateHandler->smarty->assign( 'music', $m);
  4. ...
  5. ?>


powinienes miec to tak

  1. <?php
  2. ...
  3. $this->templateHandler->assign( 'music', $m);
  4. ...
  5. ?>
Vengeance
i nazwe metody mlist() poprzedzic trzeba slowkiem 'function'
squid
Cytat(pafka @ 2005-01-08 21:49:13)
Chyba masz 2 bledy w tej linii ...
  1. <?php
  2. ...
  3. $templateHandler->smarty->assign( 'music',  $m);
  4. ...
  5. ?>


powinienes miec to tak

  1. <?php
  2. ...
  3. $this->templateHandler->assign( 'music',  $m);
  4. ...
  5. ?>

wlasnie, siedzialem dlugo nad kodem i nawet nie zauwazylem takiego bledu winksmiley.jpg czas odpoczac winksmiley.jpg
jest ok, thnx

co do slowka function przed metoda to powinno byc ale to nie jest moj kod tylko przyklad winksmiley.jpg

Czy nie lepiej extend'ować smarty? nie wiem czemu? wole przekazywac wartosci w obiekcie, na zwenatrz tylko wyswietlam, zakladam ze Ty(bregovic) robisz inaczej wiec jak i dlaczego ? winksmiley.jpg
bregovic
Ja nie extenduję smarty - bo nie potrzebuję tongue.gif Zapytałem się, bo nie do końca rozumiałem co chciałeś osiągnąć winksmiley.jpg
SongoQ
Wydaje mi się ze warto extendowac smarty bo wtedy rozszerzasz możliwości smarty. Dopasowujesz do własnych potrzeb nadpisując pewne funkcje, dodajesz swoje nowe wymagane do określonego projektu.

Napisze jak ja to robię. W każdym projekcie rozszerzam smarty, wszystkie dotychczasowe metody smarty zostają, ale mam wtedy możliwość dodania własnych nie modyfikując kodu smarty. Wtedy każda aktualizacja smarty nie spowoduje żadnych przeróbek w kodzie, a jeśli jest potrzeba dodania czegoś do funkcjonalności smarty, po prostu dodaje plugin i już.

Chętnie poczytam jak to robią inni.
squid
niestety albo stety jak chca inni php pozwala na jednokrotne dziedziczeni co sprawia ze jezeli moja klasa juz dziedziczy metody po klasie dostepu do bazy to juz smarty nie moge dziedziczyc, moglbym zamienic rolami DBAL ze smarty i abstrakcje bazy realizowac jak teraz smarty tylko po co?Co takiego moze przemawiac za tym zeby rozszerzac smarty
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.