Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> Dlaczego Smarty?
DEXTER_c
post 20.12.2006, 13:31:24
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 8.12.2005

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


Do dziś po prostu ustawiam zmienne i includuje szablon, który może wyglądać mniej więcej tak:
  1. <?php
  2. $this->HTML = '
  3.  <h3>'.$title.'</h3>
  4.  <p>'.$tekst.'</p>
  5. ';
  6. ?>


Tak więc mam oddzieloną prezentację od kodu.

Bardzo proszę o wyjaśnienie mi, na czym skorzystam decydując się na zastosowanie Smarty? Interesuje mnie głównie wydajność.
Go to the top of the page
+Quote Post
DeyV
post 20.12.2006, 14:15:16
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Na wydajności NIE zyskasz.

Smarty służy do podniesienia wygody pracy z szablonami, łatwiejszej kontroli tego co się dzieje z designem, oraz jakie dane do niego trafiają, oraz ułatwia tworzenie Cache.

Dzięki temu znacznie łatwiejsze jest odnalezienie wszystkich miejsc, w którym masz kod HTML, przeprowadzenie korekt na nim, a nawet, przynajmniej czasem, edycja wyglądu strony w programach WYSIWG.

Dzięki temu uzyskujesz też pełne rozdzielenie kodu HTML od php.


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
mike
post 20.12.2006, 14:20:06
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Przenoszę z Przedszkola na Hydepark.

P.S.
Cytat
Tak więc mam oddzieloną prezentację od kodu.
To nie jest żadne oddzielenie logiki od wyglądu.
To jest zaszycie wyglądu w logice.
Go to the top of the page
+Quote Post
SHiP
post 20.12.2006, 14:30:17
Post #4





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


Przykłady;
- W twojej metodzie przed każdym apostrofem musisz umieszczać backslash. Czy to jest wygodne?
- tworząc nową pętle po tablicy musisz tworzyć nowe zmienne pamietać o indexach etc. Przy uzyciu parsera szablonow nie ma tego problemu, wiekszosc dziwnego kodu generuje parser.
...i wiele wiele innych


--------------------
Warsztat: Kubuntu, PhpStorm, Opera
Go to the top of the page
+Quote Post
Speedy
post 20.12.2006, 14:35:40
Post #5





Grupa: Zarejestrowani
Postów: 651
Pomógł: 28
Dołączył: 4.12.2004

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


Przedstawiony przez Ciebie przykład jest bardzo trywialny. Czasem jest potrzeba załadowania danych w specyficzny sposób, który spowoduje już problem w oddzieleniu logiki aplikacji od kodu html w Twoim rozwiązaniu. Np. generowanie formularzy, wstawianie warunków do szablonu, operacje na ciągach znaków etc.


--------------------
Sygnatura niezgodna z regulaminem.
Go to the top of the page
+Quote Post
darektbg
post 20.12.2006, 15:04:04
Post #6





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 25.09.2006

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


Witam !
Smarty ma sporo zalet, ale wg. mnie jeszcze więcej wad:
- dosyć powolny
- niezbyt łatwo rozszerzalny
- wymaga od użytkownika opanowania nowej składni.

O ile 2 i 3 powód można w pewnym sensie pominąć, to pierwszy co do szybkość, jak dla mnie w pełni przekreśla Smarty.

Pozdrawiam
Darektbg


--------------------
skocz.org - system skracania linków
Go to the top of the page
+Quote Post
Sh4dow
post 20.12.2006, 15:53:06
Post #7





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


Cytat(darektbg @ 20.12.2006, 15:04:04 ) *
Witam !
Smarty ma sporo zalet, ale wg. mnie jeszcze więcej wad:
- dosyć powolny
- niezbyt łatwo rozszerzalny
- wymaga od użytkownika opanowania nowej składni.

O ile 2 i 3 powód można w pewnym sensie pominąć, to pierwszy co do szybkość, jak dla mnie w pełni przekreśla Smarty.

Pozdrawiam
Darektbg

Wolny ? No chyba jaja se robisz ? Nie wiem ile pracujesz ze smarty ale ja go uzywam chyba juz od ponad 2 lat ? chociaz nie wiem dokladnie. Jak na razie nie moge stwierdzic ze jest wolny. Jest właśnie dość wydajny, a do tego podaje do reki narzedzie zwane cache, co przyspiesza i to duzo bardziej niz by ci sie wydawało.
Co do zalet ?
Jeden kod logiczny i zupelnie rozne szablony i nie mowie tylko o html, ale mozesz stworzyc xml, wap, xul i co ci sie zyw nie podoba. Na upartego jak stworzysz odpowiednie szablony oraz pluginy z filtrami to i pdf'a wygenerujesz (jako tako).
Opanowanie nowej składni .... hmmm no tutaj to nie wiem co odpowiedziec. Załapałem ja w jakies 15-30 minut.
Nie rozszerzalny? no tego to juz nie skomentuje bo bzdur nie powinno sie komentowac.


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
ikioloak
post 20.12.2006, 19:12:24
Post #8





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


Zgoda, nauka skladni smarty nie stanowy problemu, jednak czy tak na prawde jest to potrzebne? Smarty robia sie klopotliwe kiedy zagniezdzasz w nich kod js lub css. Sklaniam sie ostatnio ku rozwiazaniom stosowanym w Symfony i CI, czyli uzycie skladni alternatywnej.
Systemem o podobnym interfejsie do Smarty jest Savant ktory opiera sie wlasnie na skladni alternatywnej. Brakuje mu tylko mechanizmu cache'owania.
Go to the top of the page
+Quote Post
skowron-line
post 20.12.2006, 21:04:36
Post #9





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Kod
Smarty robia sie klopotliwe kiedy zagniezdzasz w nich kod js lub css.


no nie wydaje mi sie wystarczy go upchnac w odpowiednie znaczniki i po sprawie


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
darektbg
post 20.12.2006, 21:20:36
Post #10





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 25.09.2006

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


Witam !

Cytat(Sh4dow @ 20.12.2006, 15:53:06 ) *
Wolny ? No chyba jaja se robisz ?


Wolny w porównaniu np. z systemem Savant
Smarty przy jednoczesnej liczbie zapytań - 100 i szablonie skompilowanym wcześniej generuje w ciągu sekundy 16,76 strony zaś savant 24,81.
Specjalnie podałem wynik dla szablonu skompilowanego wcześniej, a wiadomo czas się zwiększa w przypadku szablonu nie skompilowanego wcześniej.

Pozdrawiam
Darektbg


--------------------
skocz.org - system skracania linków
Go to the top of the page
+Quote Post
ikioloak
post 21.12.2006, 00:31:59
Post #11





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


Cytat(skowron-line @ 20.12.2006, 21:04:36 ) *
Kod
Smarty robia sie klopotliwe kiedy zagniezdzasz w nich kod js lub css.


no nie wydaje mi sie wystarczy go upchnac w odpowiednie znaczniki i po sprawie

komplikuje sie gdy odwolujesz sie w kodzie js do zmiennych wygenerowanych przez Smarty.
W zasadzie caly problem rozbija sie o skladnie Smarty. Bo sama idea, interfejs, cache itp. jest swietnie przemsyslane. Ale czy potrzebny jest do tego minijezyk, ktory jest nastepnie parsowany i tak przez php? Zwlaszcza ze ten minijezyk duzo nie wnosi.
Go to the top of the page
+Quote Post
NuLL
post 21.12.2006, 01:05:01
Post #12





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Cytat
Zwlaszcza ze ten minijezyk duzo nie wnosi.

Dla mnie kazdorazowe pisanie
  1. <?php echo $zmienna; ?>
zamiast
  1. {$zmienna}
jest delikatnie mowiac wkurzajace...

Ten post edytował NuLL 21.12.2006, 01:05:30


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
ikioloak
post 21.12.2006, 01:17:27
Post #13





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


Jasne Null, tu sie zgodze, ale zazwyczaj mozna uzywac short_tagow, a
  1. <?=$zmienna;?>

juz nie jest takie zle. Jak pisalem wczesniej - ja sie do Smarty zrazilem strasznie po przejsciach ze Smarty+JS. Tak samo jakies niescislosci byly przy dostepie do danych z wielowymiarowych tablic asocjacyjnych, gdzie kluczem jednej tablicy byla wartosc innej itp.

Ten post edytował ikioloak 21.12.2006, 01:17:54
Go to the top of the page
+Quote Post
NuLL
post 21.12.2006, 07:44:31
Post #14





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Cytat
zazwyczaj mozna uzywac short_tagow

Short_tagi nie sa zalecane.
Cytat
Jak pisalem wczesniej - ja sie do Smarty zrazilem strasznie po przejsciach ze Smarty+JS. Tak samo jakies niescislosci byly przy dostepie do danych z wielowymiarowych tablic asocjacyjnych, gdzie kluczem jednej tablicy byla wartosc innej itp.

Powiem jak szczerze - wyglada to jak bzdura wymyslona podczas pisania tego tekstu.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
ikioloak
post 21.12.2006, 10:28:18
Post #15





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


Ok byc moze jest bzdura. Pokaz mi w takim razie w jaki sposob w templatce Smarty zamieszczasz kod JS w ktorym sa znow odwolania do kodu Smarty. Nie uwazam ze sie 'nie da' - bo wiem ze sie da, tylko wg mnie malo elegancko. Wiec pokaz jak ty takie 'bzdurne' problemy rozwiazujesz.

A co do tablic.
  1. <?php
  2. $arr1 = array('klucz1' => array('kkklucz1' => 'wartosc1'), 'klucz2' => 'wartosc2', 'klucz3' => 'wartosc3');
  3. $arr2 = array('kklucz1' => 'klucz1', 'kklucz2' => array('klucz2' => 'wartosc4', 'klucz4' => 'klucz3'), 'kklucz3' => 'klucz3');
  4. ?>


Czyli po wyrzuceniu print_r, kolejno arr1 i arr2
Kod
Array
(
    [klucz1] => Array
        (
            [kkklucz1] => wartosc1
        )

    [klucz2] => wartosc2
    [klucz3] => wartosc3
)
Array
(
    [kklucz1] => klucz1
    [kklucz2] => Array
        (
            [klucz2] => wartosc4
            [klucz4] => klucz3
        )

    [kklucz3] => klucz3
)


Jak jaki sposob zapisujesz w Smarty odpowiednik:
  1. <?php
  2. $arr1[$arr2['kklucz2']['klucz4']];
  3. ?>


Ten post edytował ikioloak 21.12.2006, 10:29:05
Go to the top of the page
+Quote Post
Ace
post 21.12.2006, 12:04:52
Post #16





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

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


zawsze masz dostep do {assign var="..." value=$cos.klucz} ... w ten sposob mozna obejsc twoj problem, to akurat jest jedna z niewielu wad smarty. Mowicie o szybkosci smarty, a zaloze sie ze malo z was pisze systemy ktore musza obslugiwac duzy ruch. Poza tym to tylko wyglad. Zle napisany kod aplikacji, zle zaprojektowany model danych mysle ze jest wazniejszy niz generowanie wygladu z tych danych.

zawsze mozna okroic smarty z niektorych funkcji, wtedy bedzie dzialal szybciej, bo on chyba laduje wszystkie pluginy za kazdym razem jak sie strona wczyta.

nie wyobrazam sobie pisania aplikacji webowych bez systemu szablonow jakim jest smarty. Moge w php, ale po co.
pisac <? echo "..."; ?> mowicie ze z js sa problemy - bzdura...

{literal}
<script>
function test()
{
alert( 'test' );
}
</script>
{/literal}
chwyci bez problemu. a to i tak jest kompilowane do kodu php.
Go to the top of the page
+Quote Post
Speedy
post 21.12.2006, 13:05:24
Post #17





Grupa: Zarejestrowani
Postów: 651
Pomógł: 28
Dołączył: 4.12.2004

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


Większość opisanych tutaj problemów, to niuanse, które występują w specyficznych sytuacjach. Sam napotykałem pewne przeciwności podczas użytkowania Smarty, a wykorzystuję go dość intensywnie w swoich projektach. Niemniej jednak da się je zawsze w jakiś sposób rozwiązać, a typowe konstrukcje tworzy się w tym systemie bez problemu.
Fakt, że trzeba poznać składnię Smarty, aby móc z niego korzystać, lecz nie wydaje mi się, żeby był to wielki problem zwłaszcza, że jest ona dość intuicyjna, a manual jest przygotowany dobrze i zawsze można do niego, w razie ewentualnych niepewności, zajrzeć.
Nieprawdą jest, że Smarty jest wolne. Jest szybkie i dobrze sprawuje się podczas pracy, o czym przekonałem się na własnej skórze (w jednym ze stworzonych przeze mnie serwisów, mającym niecałe 600 unikalnych wejść na dzień, działa bez problemu).

Ten post edytował Speedy 21.12.2006, 13:07:18


--------------------
Sygnatura niezgodna z regulaminem.
Go to the top of the page
+Quote Post
ikioloak
post 21.12.2006, 13:34:54
Post #18





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


Chyba nikogo nikomu przekonac sie nie da. Ze smarty pracowalem dosyc sporo czasu, i mimo ze zdaje sobie sprawe z tego ze nie znam wszystkich ich sztuczek i kruczkow to ostatnio coraz bardziej zauwazam ich wady.

@Ace, akurat twoj przyklad js jest trywialny. Napisalem:
Cytat
Pokaz mi w takim razie w jaki sposob w templatce Smarty zamieszczasz kod JS w ktorym sa znow odwolania do kodu Smarty.


I jak wtedy postepujesz?
Kod
{literal}
<script>
function test()
{
alert( '{/literal}{$zmienna}{literal}' );
}
</script>
{/literal}

Beznadzieja prawda?
Czy zmieniasz delimitery? Przyklad z dokumentacji:
  1. <?php
  2. $smarty->left_delimiter = '<!--{';
  3. $smarty->right_delimiter = '}-->';
  4. ?>

Kod
Welcome <!--{$name}--> to Smarty

i cala przyjemnosc uzywania {$zmienna} umiera. Jak wiec obchodzisz ten problem?

Tak, to sa niusanse, tylko czasem na prawde mocno ityrujace.

Ten post edytował ikioloak 21.12.2006, 13:37:27
Go to the top of the page
+Quote Post
DeyV
post 21.12.2006, 13:39:04
Post #19





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Ale jeśli już tak na to patrzeć - znam ludzi, którzy na co dzień używają delimitera {* *} - nadal ładny i szybki, a znaczniki komentowania w smarty zmieniają na podobne do tych, które podałeś.


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Ace
post 21.12.2006, 14:06:13
Post #20





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

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


@ikioloak: dokladnie tak robie, i w niczym mi to nie przeszkadza. Ile masz takich przypadkow gdzie musisz wstawic zmienna w kod js? ile?

wywolanie funkcji przy onclick

<a href="..." onclick="funkcja({$intPageId},{$intArticleId});">...

w czym problem?

problem pojawia sie gdy chcesz w funkcji wstawic zmienna... Ale czemu? Mozesz jap rzeciez globalnie przeniesc, albo jako parametr
<script>
var liczba = {$intArticleId};

{literal}
function robcos()
{
alert( liczba );
}
{/literal}
</script>

W czym problem?
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
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: 13.06.2025 - 07:44