Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> przekazywanie obiektów php do smarty
zzeus
post 21.12.2008, 19:24:23
Post #1





Grupa: Zarejestrowani
Postów: 441
Pomógł: 71
Dołączył: 3.09.2007
Skąd: wrocław

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


Czy są jakieś zagrożenia lub przeciwskazania związane z przekazywanie obiektów php do szablonów smarty ?
Mamy kod

  1. <?php
  2. $user = new User();
  3. $smarty->assign_by_ref('user', $user);
  4. ?>


a później już w szablonie

  1. Imię użytkownika: {$user->getName()}


Ten post edytował zzeus 21.12.2008, 19:24:46


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
pinochet
post 21.12.2008, 19:37:39
Post #2





Grupa: Zarejestrowani
Postów: 120
Pomógł: 12
Dołączył: 9.10.2008
Skąd: Tricity.Rumia()

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


z dokumentacji smarty:
Cytat
Properties of objects assigned from PHP can be referenced by specifying the property name after the -> symbol.

O metodach nic nie ma, raczej przykład który podałeś jest nieprawidłowy.
Co do przeciwskazań ... niewiadomo kiedy metoda zostanie wywołana questionmark.gif

Ten post edytował pinochet 21.12.2008, 19:38:20
Go to the top of the page
+Quote Post
zzeus
post 21.12.2008, 19:41:31
Post #3





Grupa: Zarejestrowani
Postów: 441
Pomógł: 71
Dołączył: 3.09.2007
Skąd: wrocław

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


Wydaje mi się że zostanie wywołana podczas renderowania widoku, czyli w chwili wywołania $smarty->display(), które zawsze umieszczam na końcu kodu więc z tym nie powinno być problemu.


--------------------
Go to the top of the page
+Quote Post
wrzasq
post 22.12.2008, 17:52:51
Post #4





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

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


czy jest jakas konkretna przyczyna dlaczego chcesz tak zrobic w ogole? w szablonach dane powinny byc raczej atomowe (wzglednie tablicowe dla list), wiec w twoim przypadku raczej powinienes to zrobic przez po prostu $smarty->assign('name', $user->getName() ); assign_by_ref() powinienes raczej uzywac, jezeli po prostu chcesz w pozniejszym czasie na zewnatrz zmienic wartosc juz rpzypisanej zmiennej:

  1. <?php
  2. $name = $user->getName();
  3. $smarty->assign_by_ref('name', $name);
  4. $name .= ' trlaalalal';
  5. ?>


--------------------
Go to the top of the page
+Quote Post
zzeus
post 22.12.2008, 18:24:38
Post #5





Grupa: Zarejestrowani
Postów: 441
Pomógł: 71
Dołączył: 3.09.2007
Skąd: wrocław

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


żeby sobie uprościć życie, zamiast przekazywać każdy parametr osobno przekazuje raz obiekt i wewnątrz wywołuje sobie metody


--------------------
Go to the top of the page
+Quote Post
phpion
post 22.12.2008, 18:28:15
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




@pinochet & @wrzasq:
Ale gadacie brednie worriedsmiley.gif

@wrzasq:
A co jeśli miałbyś do wyświetlenia np. 10 użytkowników? Tak samo będziesz szalał?...

@zzeus:
Nie masz się czym przejmować, przekazywanie całych obiektów do Smarty nie jest niczym złym. Rób jak robisz i nie słuchaj tych głupot.
Go to the top of the page
+Quote Post
l0ud
post 22.12.2008, 18:43:26
Post #7





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Cytat
Nie masz się czym przejmować, przekazywanie całych obiektów do Smarty nie jest niczym złym.

Ale w tym przypadku kłóci się z ideą oddzielenia szablonów od kodu... Do szablonu powinniśmy podstawić tylko i wyłącznie dane do wyświetlania.

Kod
Imię użytkownika: {$user->delete(45)}


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
phpion
post 22.12.2008, 18:45:44
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(l0ud @ 22.12.2008, 20:43:26 ) *
Ale w tym przypadku kłóci się z ideą oddzielenia szablonów od kodu... Do szablonu powinniśmy podstawić tylko i wyłącznie dane do wyświetlania.
Kod
Imię użytkownika: {$user->delete(45)}

Jeżeli nie widzisz różnicy między metodą getName() a delete() no to nie mamy o czym rozmawiać.
Go to the top of the page
+Quote Post
wrzasq
post 22.12.2008, 18:57:25
Post #9





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

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


Cytat
A co jeśli miałbyś do wyświetlenia np. 10 użytkowników? Tak samo będziesz szalał?...

a czy to nie jest wspomniana przeze mnie lista? -.-'


--------------------
Go to the top of the page
+Quote Post
phpion
post 22.12.2008, 18:58:34
Post #10





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




@wrzasq:
I wtedy $user->getName() będzie ok?
Go to the top of the page
+Quote Post
l0ud
post 22.12.2008, 19:02:31
Post #11





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Oczywiście że różnicę widzę winksmiley.jpg Chodzi mi o ideę oddzielenia części szablonów od rzeczy w nich niepotrzebnych (jak na przykładzie wyżej). Ja tam wolę ręcznie przekazywać i obsadzać dane w szablonie - wtedy wyraźnie widzę z jakich zmiennych korzysta szablon i jak je przekazuję. Nie widzę problemu, z dopisaniem gdzieniegdzie kilku linii kodu smile.gif Wyjątek stanowią u mnie zmienne językowe i konfiguracyjne, które są w szablonie zawsze.


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
pinochet
post 23.12.2008, 00:42:46
Post #12





Grupa: Zarejestrowani
Postów: 120
Pomógł: 12
Dołączył: 9.10.2008
Skąd: Tricity.Rumia()

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


Cytat(phpion @ 22.12.2008, 18:28:15 ) *
@pinochet & @wrzasq:
Ale gadacie brednie worriedsmiley.gif

Nie ma to jak konstruktyna krytyka :]
Cytat(phpion)
Nie masz się czym przejmować, przekazywanie całych obiektów do Smarty nie jest niczym złym. Rób jak robisz i nie słuchaj tych głupot.
...
Jeżeli nie widzisz różnicy między metodą getName() a delete() no to nie mamy o czym rozmawiać.

1. Nie mówimy że przekazywanie obiektów jest złe tylko wywoływanie metod.
2. Nie widzę róźnicy - to nie jest C#
Oczywiście jeżeli sam sobie skrobiesz cos to nie ma znaczenia czy będziesz wywoływał metody w templates i czy wogole zastosujesz templates ale jeśli szablon przygotowuje mi grafik to nie mam czasu na tłumaczenie że "->" robisz jak jest obiekt. Obiekt to np $user ale przy $tytul nie robisz bo to nie jest obiekt .... grafik ma listę 10 - 20 - 50 zmiennych i sie nie zastanawia czy wywołuje metode czy uzywa zmiennej statycznej ... przynajmniej w projektach które tworzę tak to wygląda.

Ten post edytował pinochet 23.12.2008, 00:43:26
Go to the top of the page
+Quote Post
wrzasq
post 23.12.2008, 02:23:50
Post #13





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

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


@phpion: wtedy deleguje pobieranie danych z juzera do jakiegos iteratora i przydzielam iterator jako liste. co prawda ja nie uzywam smarty i nawet go nie lubie, ale taka jest ogolem idea szablonow (jesli sie nie myle ;P). oczywiscie, ze mozna przekazywac obiekty do szablonow, ale ma to sluzyc co najwyzej agregowaniu danych, a nie przenoszeniu ciezaru ich pobierania na szablon.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:46