![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 426 Pomógł: 32 Dołączył: 24.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
zamieściłem nową wersję opartą o wyrażenia, lepiej działającą, drobna dokumentacja i paczka do ściągnięcia tutaj Proszę o komentarze...
Buuu... żadnych komentarzy, szkoda... Ten post edytował deirathe 23.06.2009, 13:22:45 -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
A co z wydajnością? Porównałeś to np. ze smarty? No i ciężko tak ocenić nie widząc w praktyce postawionej na tym strony. Poza tym wydaje mi się, że pójście w stronę pseudo-języka nie jest dobrym pomysłem, użytkownik (który dopiero co pobieżnie liznął smarty) dostaje kolejnego potworka do nauki. Ja np. idę w stronę maksymalnego upraszczania systemu szablonów - używam tylko {zmienna} i to w 90% wypadków wystarcza, można menu przedstawić tak:
1. Menu: <ul>{menu}</ul> 2. Element menu: <li><a href="{link}">{nazwa}</a></li> - ten sposób nawet kompletny laik łatwo pojmie, w końcu user chce edytować kod HTML, kwestia tylko odpowiedniego podzielenia kodu HTML, myślę, że to jest dla użytkownika prostsze niż: No i czy warto tworzyć kolejny system szablonów, kiedy tyle ich już jest? |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
No i czy warto tworzyć kolejny system szablonów, kiedy tyle ich już jest? Chciałem spytać o to samo... -------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 426 Pomógł: 32 Dołączył: 24.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Co do tego że istnieje wiele języków szablonów- fakt istnieje i większość z nich wygląda jak smarty {$zmienna} co wygląda dziwnie, jeżeli ktoś choć minimalnie liznął xsl to moje szablony są bardzo zbliżone...
Dodatkowym atutem ma być właśnie rozszerzalność nad którą pracuję tj. tworzenie ala' komponentów, np:
I później zamiast ciągle powtarzać kod <a href="$url"><div class="button" style="color:$color"><img src="somebutton.png" alt="some buton"/></div></a> wpisujemy:
Co do testów dziś się przymierzam, zaraz po obiedzie wykonam i podeślę jak to wygląda No i elementy typu {literal} normalnie denerwują człowieka Ten post edytował deirathe 23.06.2009, 16:14:06 -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
OPT ma podobny styl, jest PHPTAL. Nie widzę sensu chyba że będzie super szybkie.
Pilsener: wszystko jest szybsze i lżejsze od smarty ![]() Ten post edytował viking 23.06.2009, 16:38:58 -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 426 Pomógł: 32 Dołączył: 24.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
o popatrz OPT się nie interesowałem dzięki, zaraz przejrzę
![]() -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 654 Pomógł: 17 Dołączył: 19.03.2006 Skąd: z kosmosu ;) Ostrzeżenie: (0%) ![]() ![]() |
Moja ocena to nie jest, ale raczej uwaga
![]() Znalazłem w pliku /parsed.cache w archiwum taką linijkę: Cytat <?=$this->getVar("\$some.test")?>..... dupeczka heh ![]() Pozdrawiam, WebNuLL -------------------- Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian ![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 426 Pomógł: 32 Dołączył: 24.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Kurcze, ups ;P dzięki zaraz usunę
Przepraszam za reaktywację ale nie ma sensu tworzyć nowego tematu przecież: Mój system szablonów nowa wersja- kandydująca:) Opis tutaj: http://www.w3labs.pl/php/system-szablonow-ui-10rc.html przykład na serwerze tu: http://frea.w3labs.pl/ szablon tu: http://frea.w3labs.pl/app/test/tpl.php Paczka do pobrania z przykładem tu: http://www.w3labs.pl/wp-content/uploads/20...ea-template.zip Bardzo proszę o opinie! Zrobiłem dodatkowo porównanie funkcji żeby zachęcić do sprawdzenia (ui- moj szablon vs najnowsze smarty) Nie testowałem komponentów bo nie było do czego porównać, tak samo z drugiej strony nie testowałem niektórych rzeczy bo mój projekt jest dość młody i jeszcze nie wszystko jest zaimplementowane. Jak widać na pętlach trochę traci będę musiał nad tym popracować Kod 10 zmiennych
ui bez cache 0.0260820388794 smarty bez cache 0.0479238033295 cache smarty 0.0261490345001 0.00750780105591 0.00613808631897 0.00712585449219 ui 0.00455093383789 0.00575590133667 0.00445604324341 0.00514793395996 petla 100 elementow ui bez cache 0.0475070476532 cache 0.0273039340973 0.0275688171387 0.0279021263123 0.0298480987549 smarty bez cache 0.0412979125977 cache 0.0153110027313 0.0118930339813 0.0190019607544 0.0173931121826 if ui bez cache 0.0110740661621 cache 0.00311899185181 0.00261998176575 0.00289607048035 0.00314903259277 smarty bez cache 0.0195000171661 cache 0.00683498382568 0.00765919685364 0.00782489776611 0.00738787651062 include 5 plikow z 1 zmienna ui bez cache 0.0756769180298 cache 0.00561118125916 0.00476217269897 0.00568914413452 0.00439715385437 smarty bez cache 0.058963060379 cache 0.00990200042725 0.0100519657135 0.0094301700592 0.0156028270721 Ten post edytował deirathe 30.09.2009, 08:18:03 -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Nie lepiej zamiast tego pomóc rozwijać OPT, który ma już od dawna praktycznie wszystkie te rzeczy + jeszcze trochę, tyle że dużo elastyczniej zaprojektowane i lepiej przetestowane?
-------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 426 Pomógł: 32 Dołączył: 24.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
A co ja mogę tam pomóc?...
Liczyłem na jakiś konstruktywny komenarz typu: "Twoj parser jest do dupy w nie lepiej użyć np .... rozwiązania..." albo "Ja bym przestrzeń nazw inaczej zorbił: ..." Mimo wszystko dzięki za odzew chociażby Ten post edytował deirathe 30.09.2009, 11:04:42 -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Jaka składnia {} ?! O którym OPT ty mówisz, bo raczej nie o 2.0? A wersji 2.0 nie przyganiaj, bo sam masz w treści znaczników zapisy w stylu ${zmienna}
![]() Rzecz polega na tym, że jeśli temu zadaniu nie poświęcisz się przez dłuższy czas, to nie ma szans, by wynieść taki system szablonów na sensowny poziom. Sam XML Cię nie uratuje, bo jest to tylko pewien sposób zapisu i nic więcej - trzeba jeszcze mieć pomysł, jak go wykorzystać, tymczasem na razie w większości robisz to samo, co 90% innych systemów szablonów, czyli reimplementujesz PHP. Lista funkcjonalności: - ui:var - wstawianie zmiennej. OPT też ma znacznik opt:put, ale klamerki zostawiłem w nim właśnie dlatego, że nie zabraniał tego standard XML-a oraz że do wstawienia zmiennej w tekście są po prostu wygodniejsze niż zapisy w stylu <ui:var select="$zmienna" /> i nawiasem mówiąc patrząc na podane przykłady, to Twój system też coś takiego ma. Silnika wyrażeń nie masz, więc nie możesz napisać np. $a+$b - ui:if - identyczny IF, jaki można spotkać w każdym języku programowania, tylko z większą ilością ograniczeń. Parsowanie testowanego wyrażenia jest robione w bardzo prymitywny sposób, nie zapewnia żadnej ochrony przed błędami i na dłuższą metę nie daje się rozbudowywać. - ui:loop - zwykła pętla, która nie wnosi nic ponad to, co oferuje np. foreach. - ui:import - nie wnosi nic ponad to, co oferuje np. include w PHP. - ui:define-component oraz ui:component - racja, funkcjonalność funkcji rzadko się w systemach szablonów spotyka, ale z tego co widzę, to ograniczyłeś się wyłącznie do powielenia tejże funkcjonalności. Innymi słowy, robisz język szablonów z zerową świadomością, co możesz dzięki temu osiągnąć, a możesz przy odrobinie wysiłku usunąć mnóstwo ograniczeń PHP. Zamiast tego, piszesz kolejny pozdbiór PHP, tyle że dla odmiany ubrany w znaczniki zamiast w klamerki. Jest to najprostsze podejście, bo faktycznie - zamiana ui:loop na foreach zbyt wielkim wysiłkiem nie jest, ale co Ci ono daje? Przypuśćmy, że po wielu godzinach pracy uda Ci się w końcu zrobić prawdziwy parser wyrażeń tak, że będziesz mógł przepuszczać zmienne przez funkcje, liczyć i robić to wszystko, co potrafią wyrażenia PHP. Spróbujmy teraz zrobić listę zdjęć wyświetlaną w trzech kolumnach: Kod <table> <ui:loop name="foo" select="$list"> <tr> <ui:loop name="bar" select="@foo.subitems"> <ui:if test="@bar.notEmpty"> <td><ui:value select="@bar.title" /></td> <ui:else><td></td></ui:else> </ui:if> </ui:loop> </tr> </ui:loop> </table> Ponieważ zastosowałeś XML, a Twoja pętla-klon jest zwykłym foreachem, musisz po stronie skryptu pamiętać, by podzielić to na odpowiednią ilość kolumn, uzależniając tym samym kod PHP i po części logikę aplikacji od szablonu. W Smartym mógłbyś to zrobić w całości po stronie szablonu, ale musiałbyś zaklepać cały algorytm dzielenia tego na kolumny. W OPT poświęciłem sporo czasu i obserwacji praktycznych problemów, by można było to zrobić dużo prościej: Kod <table> <opt:grid name="list" cols="3"> <tr> <opt:item><td>{$list.item}</td></opt:item> <opt:emptyItem><td></td></opt:emptyItem> </tr> </opt:grid> </table> Jak widzisz, pomyślałem i da się to zrobić w prosty, deklaratywny sposób, a OPT w tle dba, by to poprawnie skompilować. Opracowanie elastycznych mechanizmów i napisanie całego kodu kompilatora do tego elementu trochę czasu zajęło, a takich usprawnień są dziesiątki. Na dodatek sam parser to nie wszystko, bo system szablonów musi mieć API, przydałoby się, by istniały porty do frameworków itd. o infrastrukturze sieciowej i dokumentacji nie wspominając. OPT już to wszystko ma, ale dalej się rozwija i implementowana jest nowa funkcjonalność i miło byłoby gdyby zamiast tracić moc i pomysłowość na wymyślanie koła na nowo, pomóc w ulepszaniu tego, co już jest. System szablonów to nie tylko ify, pętle i klasa z assign() i display()... PS. A nie odpisywałem wcześniej rozwlekle, bo się zbierałem do wyjścia. Mam nadzieję, że ta opinia jest już bardziej konstruktywna. Ten post edytował Zyx 30.09.2009, 11:49:12 -------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 426 Pomógł: 32 Dołączył: 24.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Teraz się czuję mile skrytykowany
![]() Z tymże moja pętelka to nie jest podmiana na foreach ![]() Z tym że mam bazową funkcjonalność jak pętelki, marne ify itd... zgodzę się no bo przecież nie od razu rzym zbudowano, a trzeba postawić jeden kamień aby móc na nim położyć drugi itd... Nie wiedziałem że popełniłeś OPT- chylę czoła, ale podejrzewam że nie miało całej funkcjonalności na dzień dobry. A klamerki wyszły bo sprawdzałem chyba nawet i na Twoim blogu wprowadzenie do opt i jak zobaczyłem klamrę to pierwsze o czym pomyślałem to smarty ![]() co do define component- nie spotkałem się z tym jeszcze nigdzie ![]() Ten post edytował deirathe 30.09.2009, 12:06:44 -------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 654 Pomógł: 121 Dołączył: 27.10.2007 Skąd: Poznań, Łódź Ostrzeżenie: (0%) ![]() ![]() |
OPT i używam i polecam
![]() ps. szkoda, że nie ma portu dla Kohany, wtedy uczyłbym się dwóch za jednym razem ![]() Pozdro -------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 426 Pomógł: 32 Dołączył: 24.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
@fly474
dzięki za krytykę -------------------- |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
fly474 -> jest port dla Kohany, tylko że zrobiony przez kogo innego: http://wiki.invenzzia.org/wiki/OPT_for_Kohana_Framework
![]() deirathe -> wersja 1.x i owszem, nie miała, ale 2.0 była od początku pisana z myślą o byciu czymś więcej, niż tylko zwykłym PHP oprawionym w XML. -------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.08.2025 - 04:07 |