Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> nauka - własny system szablonów
mgebala8
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.07.2014

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


Korzystając z chwili wolnego czasu robię sobię odwozorwanie różnych funkcjonalności frameworków - obiektowo i w php, np. routing, połączenia bazodanowe singleton vs proxy itp.
Wszystko głównie w celach edukacyjnych ale kto wie może z tego wyjdzie mi kiedyś jakaś namiastka frameworka lub microframework.

Wśród wielu różnych modułów stanąłem jednak przed problemem odwzorowania systemu szablonów i tu pojawia się problem jak coś takiego napisać ? ogólnie wpadłem na pomysł że za pomocą wyrażeń regularnych zamienie sobię kod np.

  1.  
  2. treść strony
  3.  
  4. @include('menu')
  5.  
  6. @for($i=0;$i<10;$i++)
  7. bla bla bla
  8. @endforeach
  9.  
  10. tutaj moja zmienna przekazana do widoku: {$zmienna}
  11.  


domyślnie maszynka ma mi zamienić coś takiego na poniższy ciąg i przypisać to do zmiennej $widok;

  1. <?php include('menu') ?>
  2.  
  3. <?php for($i=0;$i<10;$i++):?>
  4. bla bla bla
  5. <?php endforeach; ?>
  6.  
  7. tutaj moja zmienna przekazana do widoku: <?php echo $zmienna ?>
  8.  


i tu pojawia się mały problem a w zasadzie 2, czy na podobnej zasadzie działają silniki twig czy blade ? oraz jak mogę sparsować i wyświetlić treść strony trzymaną w zmiennej $widok ?

Ten post edytował mgebala8 11.07.2014, 09:13:27
Go to the top of the page
+Quote Post
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Pseudokod jest zamieniany na zwykły kod php i wykonywany (dodatkowo w cache zapisana wersja PHP). Czyli tak jak pokazałeś.
Go to the top of the page
+Quote Post
mgebala8
post
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.07.2014

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


Pyton_000 dzięki za odpowiedź, wcześniej nie myślałem o cache-owaniu danych a teraz poddałeś mi całkiem dobry pomysł na poszerzenie swojej wiedzy w ta stronę, w związku z tym 3 pytania:

- Gdzie powinno się zapisywać cache ? sesje, pliki czy baza danych ? Jest jeszcze pamięć ram ale ona odpada ze względu na dodatkową konfigurację a mi zależy na uniwersalności i prostocie.
- Jak wygląda nadpisywanie takich danych ? korzystając z laravela wszelkie zmiany są wprowadzane na bieżąco więc skąd on wie kiedy ma je nadpisać a kiedy zostawić i pobrać ?
- ponawiam pytanie dotyczące wyświetlenia zawartości strony w zmiennej $widok - trzymam tam for include itp. więc zwykłe polecenie echo odpada


Pozdrawiam i dziękuję za wskazówki - są one bezcenne ! wink.gif
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Wydaje mi się, że bez sensu jest pisać własny system szablonow. Kilka powodow:
1) Jest to bezsensu wink.gif
2) Jak ktos kiedys bedzie chcial/musial pisac z tobą lub po tobie poprawiac, to zachlasta się na kolejnym systemie szablonow
3) Nie będzie to mialo pelnej porządnej funkcjonalnosci
4) Lepiej już zrobic system widoku, gdzie bedziesz mieszal kod php z html. Kazdy bez problemu bedzie mogl pisac w takim "szablonie" i bedzie mogl robic co bedzie chcial/potrzebowal i nie bedzie ograniczony to prostego systemu szablonow.
Przyklad jak cos takiego napisac w 10 minut masz mojej stopce


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mgebala8
post
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.07.2014

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


^^ nospor, rozumiem Cię ale bardziej mi zależy na nauce i pobawieniu się kodem niż wymyślaniu koła na nowo…

w swojej zmiennej pobierasz content za pomocą constukcji:

  1.  
  2. $this->Run($params);
  3. $result = ob_get_contents();



a jest jakaś opcja żeby to odwrócić ? coś w stylu ob_set_contents() wink.gif
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Po co?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Pisanie własnych narzędzi "dla nauki" ma jakiś tam sens, ale nie w Twoim przypadku. Po pytaniach jakie zadajesz widać, że masz niedużą wiedzę w wielu dziedzinach, których znajomość jest niezbędna do napisania czegoś co miałoby ręce i nogi (nawet w kontekście "dla nauki"). IMO powinieneś wykorzystać ten czas na zaznajomienie się z jakimś istniejącym rozwiązaniem (np. wspomniany Twig) i jego dogłębnym poznaniem. Nie dość, że nauczysz się "jak zrobić to dobrze", przy okazji poznasz narzędzie, które będziesz mógł wykorzystać w prawdzinym projekcie.

PS. Wyrażenia regularne nie nadają się do parsowania tego typu rzeczy.
Go to the top of the page
+Quote Post
mgebala8
post
Post #8





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.07.2014

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


Crozin - dzięki za opinie, właśnie dlatego ten temat i próba skoczenia na głęboką wodę wink.gif

Co do twiga myślę że znam go dobrze, blade z laravela z nam bardzo dobrze i często go wykorzystuje w komercyjnych projektach. Tu raczej chodzi o to żeby zobaczyć co jest pod maską i spróbować napisać coś swojego, nawet jeśli miałby to być maluch w porównaniu do mercedesa jakim jest blade to myślę że warto wink.gif

dlaczego wyrażenia regularne nie nadają się do parsowania tego typu rzeczy ? i co w takim razie to parsuje ?

Ten post edytował mgebala8 11.07.2014, 11:25:46
Go to the top of the page
+Quote Post
!*!
post
Post #9





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


@ w kodzie to chybiony pomysł, kojarzą się z czymś innym wink.gif Jeśli chcesz odpalać zmienne tylko w widoku, zainteresuj się extract, zakładając że używasz tego w klasach, inaczej nadpiszesz zmienne globalnie. Do zmiany pseudo kodu, możesz użyć preg_repalce i stworzyć coś na wzór tokenizacji.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
mgebala8
post
Post #10





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.07.2014

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


po prostu wykorzystałbym funkcje:



a co do @ blade z laravela wykorzystuje ją z powodzeniem


Ten post edytował mgebala8 11.07.2014, 11:07:56
Go to the top of the page
+Quote Post
Crozin
post
Post #11





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@mgebala8: @!*!: @mgebala8: HTML-a nie da się parsować przy pomocy wyrażeń regularnych, podobnie jest z szablonami (ten sam poziom złożoności języka). Taka niemal standardowa lektura: http://stackoverflow.com/a/1732454/252591

Ten post edytował Crozin 11.07.2014, 11:30:32
Go to the top of the page
+Quote Post
!*!
post
Post #12





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


@Crozin - w systemie szablonów nie chodzi o parsowanie HTML.

Ten post edytował !*! 11.07.2014, 11:33:51


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Crozin
post
Post #13





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@!*!: Napisałem, że podobnie jak przy próbie parsowania HTML-a, ponieważ "typowy system szablonów" (patrz wspomniany Twig) operuje na równie złożonym co HTML poziomie języka.
Go to the top of the page
+Quote Post
!*!
post
Post #14





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(Crozin @ 11.07.2014, 12:34:20 ) *
@!*!: Napisałem, że podobnie jak przy próbie parsowania HTML-a, ponieważ "typowy system szablonów" (patrz wspomniany Twig) operuje na równie złożonym co HTML poziomie języka.


Bez przesady, to tylko zamiana X na Y. Jakkolwiek by tego nie napisać, zawsze znajdzie się w tym jakiś brak i nic nie zastąpi czystego PHP.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Crozin
post
Post #15





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Nie, to nie tylko zamiana X -> Y, bo przykładowo taki zapis jest niepoprawny:
Kod
<abc>

@if (...)

  dsadas

@endfor
Nie może wystąpić tag @endfor bez uprzedniego wywołania @for.

Ponownie polecam lekturę pytania i kilku pierwszych odpowiedzi, które zawierają już dużo więcej merytorycznych argumentów: http://stackoverflow.com/questions/1732348...-contained-tags - szczególnie, fragment dot. hierarchii Chomsky'ego.

Ten post edytował Crozin 11.07.2014, 11:42:34
Go to the top of the page
+Quote Post
!*!
post
Post #16





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Jeśli ktoś czepia się takich "błędów" to równie dobrze możemy mieć pretensje dlaczego to nie działa w czystym PHP. Strata czasu na taki parser.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
mgebala8
post
Post #17





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.07.2014

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


Crozin - wybacz ale za bardzo Cię nie rozumiem ? Jest gościu który chce się porwać z motyką na słońce i spróbować napisać coś swojego nawet niech będzie to gorsze i okrojone ale przecież nie oto chodzi by tworzyć następcę laravela, po prostu nauczę się czegoś nowego a ty za wszelką cenę chcesz mi uświadomić że nic nie wiem i nie powinienem się za to zabierać ehh już samo przygotowanie do napisania takiego systemu szablonów nauczyło mnie kilku nowych rzeczy a co dopiero pisanie go wink.gif

jeśli chodzi o :
Nie może wystąpić tag @endfor bez uprzedniego wywołania @for.

to kto powiedział że nie może ? powiem więcej może i wystąpi wtedy w kodzie będziemy mieli:

  1. <?php endfor; ?>


i parser php zwróci błąd ale przecież nie ma to związku z systemem szablonów

ogólnie zarys jest taki:

- zmiana zmiennych {zmienna} na <?php echo $zmienna; ?>
- możliwość odwzorowania kilku pętli ifów (if,for,foreach)
- dodanie opcji layout i wprowadzenie sekcji (w jednym pliku mamy kilka sekcji które parser zapisuje do tablicy i podmienia w drugim pliku template)
- odwzorowanie @include - i tu pojawia się mały problem bo inkludować pliki można by w nieskończoność a przecież każdy inkludowany plik musi być najpierw parsowany przez mój system szablonów

- wygenerowane szablony będziemy zapisywali do pamięci cache żeby odciążyć serwer php

Ten post edytował mgebala8 11.07.2014, 12:07:49
Go to the top of the page
+Quote Post
Pyton_000
post
Post #18





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Pisz i nie patrz co Oni piszą smile.gif Celowo chcą Cię zniechęcić, a jak się Im uda to wygrają, a jak nie to pokażesz że jesteś zdeterminowanych w celu smile.gif

Go to the top of the page
+Quote Post
by_ikar
post
Post #19





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Moim zdaniem w php nie powinno się używać żadnych szablonów typu twig, blade, smarty etc bo to jest głupie. Uczysz się kolejnej składni, kolejnego szablonu, w tylko jednym języku tych składni jest kilka.. No a potem wyjdzie symfony 3, symfony 4 i znów będzie jakaś nowa "super duper" lepsza wersja, i wszyscy się tym będą jarać, bo to jest takie fajne.. PHP powstał jako język do szablonów i niech tym pozostanie, dorabianie do tego na siłę jakiejś dodatkowej logiki, bo tak jest "ładniej", jest bezsensu. A o syntaksie w edytorach nie wspomnę. Zaś musisz mieć edytor który ci to sensownie podświetla, ewentualnie monituje cię o literówkach, to trzeba jakieś wtyczki do edytorów ściągać.. To już przestaje być zabawne, a powody do używania jakiś systemów szablonów są kuriozalne. Np twig for designers (fuck yeah, bo w zwykłym php wygląda to brzydko). Albo jeszcze lepsze ze strony twiga:

  1. But even if PHP started its life as a template language, it did not evolve like one in the recent years. As a matter of fact, it doesn't support many features modern template engines should have nowadays


No tak, bo przecież twig jest napisany w innym języku, dlatego ma więcej możliwości..

Kiedyś też myślałem że tak się powinno robić, bo wszyscy tak robili, aż uświadomiłem sobie że to jest bezsensu. "Jedzmy gówno, milion much nie może się mylić".
Go to the top of the page
+Quote Post
mgebala8
post
Post #20





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.07.2014

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


Pyton_000 - dzięki za wsparcie, traktuję to jako zabawę więc nie tak łatwo mnie zniechęcić wink.gif

Cytat(nospor @ 11.07.2014, 11:42:16 ) *
Po co?


załóżmy że mam zmienną $widok = 'echo "test<hr>"; for($i=1;$i<10;$i++){echo "test<br>"}';

i teraz chciałbym ją wypisać i sparsować na ekranie a do tego potrzebuje czegoś w stylu ob_set_contents() bo echo mi tutaj nie zadziała...



Go to the top of the page
+Quote Post
Pyton_000
post
Post #21





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


by_ikar systemy Template powstały po to aby kod szablonu był czytelniejszy.

Ja wiem że PHP to najlepszy system szablonów bo nie trzeba parsować ale czasami wolę mieć
  1. <p>{{zmienna}}</p>

niż
  1. <p><?=$zmienna?></p>

albo jeszcze gorzej (masakra)
  1. <p><?php echo $zmienna; ?></p>
Go to the top of the page
+Quote Post
nospor
post
Post #22





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pyton do tego naprawde idzie sie przyzwyczaic. Tez kiedys sobie nie wyobrazal tak pisac, a teraz nie wyobrazam sobie ze musialbym znowu przebijac sie przez jakis durny, ograniczony i wkurzający system szablonow

Cytat
załóżmy że mam zmienną $widok = 'echo "test<hr>"; for($i=1;$i<10;$i++){echo "test<br>"}';

i teraz chciałbym ją wypisać i sparsować na ekranie a do tego potrzebuje czegoś w stylu ob_set_contents() bo echo mi tutaj nie zadziała...

Cos nie tak z logiką twojego systemu. Czemu masz miec taką zmienną? Szablony bedą w plikach i masz robic zwykle include() i po sprawie. Ty nie masz miec szablonow w zmiennych.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mgebala8
post
Post #23





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.07.2014

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


Cytat(nospor @ 11.07.2014, 14:08:02 ) *
Ty nie masz miec szablonow w zmiennych.


tylko że najpierw muszę przeparsować te pliki moim systemem szablonów żeby powstawiały tam gdzie chce kod php (pozamieniał @zmienna -> <?php echo $zmienna ?> itp.) więc efekt będzie taki że otrzymam zmienną z ostatecznym kodem php który będę musiał jakoś wyświetlić i tu pojawia się problem jak to zrobić ? wink.gif
Go to the top of the page
+Quote Post
nospor
post
Post #24





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Poraz kolejny raz ci powtarzam: sparsowany kod szablonu masz trzymac w pliku php. Dzieki temu bedziesz robil INCLUDE i po sprawie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
!*!
post
Post #25





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


@nospor - jemu chyba chodzi o tworzenie tych plików w locie, nie każdy od razu cały szablon zapisuje w cache jako PHP, dlatego jest np. {include:file.html} które działa jak rekurencja.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
nospor
post
Post #26





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




include:file.htm powinno normalnie includowac plik jak w czystym php, wiec za bardzo nie widze czzemu ten przyklad mial sluzyc wink.gif
Poza tym nie odnioslem wrazenia takiego jak ty


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
!*!
post
Post #27





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(nospor @ 11.07.2014, 15:19:54 ) *
include:file.htm powinno normalnie includowac plik jak w czystym php

I to robi z tą różnicą, że jeszcze raz jest odpalany parser, inaczej byś nie zamienił kolejnych zmiennych.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
nospor
post
Post #28





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No ale dobrze, parser niech sie odpala teraz dla tego include, nikt mu nie broni. Ale to include znowu ma byc zapisane w pliku php, a pliku wyzej ma byc zamienione na zwykle include phpowe. Odpalanie tego ze zmiennej nie ma sensu. Owszem, na jakims tam etapie parsowania bedzie to zapisane w zmiennej ale tylko na chwile by za chwilke zapisac to docelowo w pliku php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Crozin
post
Post #29





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Jeśli ktoś czepia się takich "błędów" to równie dobrze możemy mieć pretensje dlaczego to nie działa w czystym PHP. Strata czasu na taki parser.
Jeżeli błąd składni to "błąd" to co nie jest błędem w Twoim rozumowaniu? Ale masz rację, szkoda czasu na narzędzie, które nawet tak trywialnych błędów nie wyłapie na etapie "kompilacji". Dlatego albo stosuje się czyste PHP, albo stosuje gotowe, solidne rozwiązania, albo jeżeli ma się jakiś powód pisze własne - ale takie, które rozwiązuje jakiekolwiek problemy, a nie tylko stwarza nowe.
Cytat
Crozin - wybacz ale za bardzo Cię nie rozumiem ? Jest gościu który chce się porwać z motyką na słońce i spróbować napisać coś swojego nawet niech będzie to gorsze i okrojone ale przecież nie oto chodzi by tworzyć następcę laravela, po prostu nauczę się czegoś nowego a ty za wszelką cenę chcesz mi uświadomić że nic nie wiem i nie powinienem się za to zabierać ehh już samo przygotowanie do napisania takiego systemu szablonów nauczyło mnie kilku nowych rzeczy a co dopiero pisanie go wink.gif
Masz rację - częściowo próbuję Cię zniechęcić. Masz też rację w tym, że nauczysz się czegoś nowego pisząc takie coś, ale...
1. Nauczysz się zdecydowanie mniej, niż gdybyś czas ten poświęcił na rozwój w innym kierunku, tj. nauczenie się wykorzystywania istniejącego narzędzia, zbadanie i przeanalizowanie jak działa "pod maską", napisanie jakiś rozszerzeń do niego. Co więcej zamiast od razu uczyć się dobrych i przydatnych rzeczy siłą możesz wyrobić sobie wiele złych wawyków.
2. Niemal na pewno nie uda Ci się stworzyć czegoś wartego (dla Ciebie samego) wykorzystania w przyszłości, ponieważ po Twoich pytaniach widać, że brak Ci jeszcze nieco doświadczenia/wiedzy by napisać dosyć mocno rozbudowane narzędzie. Nie wiesz jakich problemów się spodziewać, domyślam się, że zapewne nawet nie wiesz jakich problemów chcesz się pozbyć przy pomocy tego narzędzia.
3. Będziesz miał sporo satysfakcji ze stworzenia czegoś własnego, ale nie będziesz miał znajomości/doświadczenia z wykorzystaniem czegoś faktycznie przydatnego.


Innymi słowy poświęcisz sporo czasu dla nauczenia się kilku rzeczy, zamiast poświęcenia sporej ilości czasu na nauczenie się sporej ilości rzeczy - możesz mi wierzyć, sam przerabiałem dokładnie to samo dobrych kilka lat temu (mam chyba nawet gdzieś zapisany projekt własnego systemu szablonów).


Go to the top of the page
+Quote Post
by_ikar
post
Post #30





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Cytat(Pyton_000 @ 11.07.2014, 13:57:31 ) *
by_ikar systemy Template powstały po to aby kod szablonu był czytelniejszy.

Ja wiem że PHP to najlepszy system szablonów bo nie trzeba parsować ale czasami wolę mieć
  1. <p>{{zmienna}}</p>

niż
  1. <p><?=$zmienna?></p>

albo jeszcze gorzej (masakra)
  1. <p><?php echo $zmienna; ?></p>


Też tak kiedyś myślałem, kiedy tworzyłem swój ambitny system szablonów, wydawało mi się że jest mi to potrzebne, że tak jest czytelniej! A prawda jest taka, że jest to zbędna logika do czegoś co mamy out of box. Rozumiem system szablonów w stylu tego co jest w symfony2 - tzn możliwość dziedziczenia, sloty etc. To akurat jest fajny pomysł. Ale same templatki powinny być IMO zawsze jako html + php. Też kiedyś stworzyłem swojego "potworka":

  1. <?php
  2.  
  3. class TemplateParser
  4. {
  5. protected $options;
  6. protected $parameters;
  7.  
  8. public function __construct(array $options = array())
  9. {
  10. $this->options = array_merge_recursive(array(
  11. 'pattern' => array('/(?<!@)@(?!@)/is', '/@@/is'),
  12. 'replecament' => array('echo ', '@'),
  13. 'pattern_variable' => '/(\$([\w\.\$]+))/is',
  14. 'replecament_variable' => array($this, 'replaceVariable'),
  15. 'replecament_ignore' => array($this, 'preReplace'),
  16. 'pattern_ignore' => '#(?:{ignore}.*?{/ignore}|({.*?}))#is',
  17. 'extension' => '.tpl',
  18. 'template_dir' => './',
  19. ), $options);
  20. }
  21.  
  22. /**
  23.   * @param array $parameters
  24.   * @return void
  25.   */
  26. public function add(array $parameters)
  27. {
  28. foreach($parameters as $key => $val)
  29. {
  30. if(!isset($this->parameters[$key]))
  31. {
  32. $this->parameters[$key] = $val;
  33. }
  34. }
  35. }
  36.  
  37. /**
  38.   * @param string $name
  39.   * @param string $value
  40.   * @return void
  41.   */
  42. public function set($name, $value)
  43. {
  44. $this->parameters[$name] = $value;
  45. }
  46.  
  47. /**
  48.   * @return array
  49.   */
  50. public function getAll()
  51. {
  52. return $this->parameters;
  53. }
  54.  
  55. /**
  56.   * @param string $name
  57.   * @return string
  58.   */
  59. public function exists($name)
  60. {
  61. $file = $name.$this->options['extension'];
  62.  
  63. foreach((array)$this->options['template_dir'] as $dir)
  64. {
  65. if(is_readable($dir.$file))
  66. {
  67. return $dir.$file;
  68. }
  69. }
  70.  
  71. return false;
  72. }
  73.  
  74. /**
  75.   * @param string $template
  76.   * @param array $parameters
  77.   * @param string $mode:
  78.   * string - eval
  79.   * file - include
  80.   * @return string|false
  81.   */
  82. protected function evaluate($template, array $parameters = array(), $mode = 'string')
  83. {
  84. if('file' === $mode)
  85. {
  86. extract($parameters);
  87. require $template;
  88.  
  89. return ob_get_clean();
  90. } else
  91. {
  92. extract($parameters);
  93. eval('; ?>'.$template.'<?php ;');
  94.  
  95. return ob_get_clean();
  96. }
  97.  
  98. return false;
  99. }
  100.  
  101. /**
  102.   * @param mixed $name
  103.   * @return string
  104.   * @throws InvalidArgumentException
  105.   */
  106. protected function load($name)
  107. {
  108. $file = $this->exists($name);
  109.  
  110. if(false === $file)
  111. {
  112. throw new InvalidArgumentException(sprintf('Template "%s" does not exist.', $name));
  113. }
  114.  
  115. $fileTemplate = file_get_contents($file);
  116.  
  117. return $this->parse($fileTemplate);
  118. }
  119.  
  120. /**
  121. * @param string $name
  122. * @return string
  123. * @throws InvalidArgumentException
  124. * @throws RuntimeException
  125. */
  126. public function render($name)
  127. {
  128. $storage = $this->load($name);
  129.  
  130. if (false === $content = $this->evaluate($storage, $this->parameters))
  131. {
  132. throw new RuntimeException(sprintf('Template "%s" can not be rendered.', $this->exists($name)));
  133. }
  134.  
  135. return $content;
  136. }
  137.  
  138. protected function parse($fileTemplate)
  139. {
  140. return preg_replace_callback($this->options['pattern_ignore'], $this->options['replecament_ignore'], $fileTemplate);
  141. }
  142.  
  143. protected function replaceVariable($varName)
  144. {
  145. return preg_replace(array('/\.(\$[\w-]+)/', '/\.([\w-]+)/is'), array('[$1]', '[\'$1\']'), $varName[1]);
  146. }
  147.  
  148. protected function preReplace($replace)
  149. {
  150. if(!empty($replace[1]))
  151. {
  152. $compile = preg_replace($this->options['pattern'], $this->options['replecament'], $replace[1]);
  153. $compile = preg_replace_callback($this->options['pattern_variable'], $this->options['replecament_variable'], $compile);
  154. $compile = preg_replace('/{(.*?)}/is', '<?php $1 ?>', $compile);
  155.  
  156. return $compile;
  157. } else
  158. {
  159. return preg_replace('/{(\/)?ignore}/is', '', $replace[0]);
  160. }
  161. }
  162. }


Gdzie uważałem że { something } jest czytelniejsze niż <?php something ?>. No ale wyrosłem z tego i jestem zdecydowanie za tym żeby nie używać szablonów.
Go to the top of the page
+Quote Post
!*!
post
Post #31





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(Crozin @ 11.07.2014, 17:37:21 ) *
Jeżeli błąd składni to "błąd" to co nie jest błędem w Twoim rozumowaniu? Ale masz rację, szkoda czasu na narzędzie, które nawet tak trywialnych błędów nie wyłapie na etapie "kompilacji". Dlatego albo stosuje się czyste PHP, albo stosuje gotowe, solidne rozwiązania, albo jeżeli ma się jakiś powód pisze własne - ale takie, które rozwiązuje jakiekolwiek problemy, a nie tylko stwarza nowe.

A jaki jest sens, aby system szablonów robił dodatkowy narzut na sprawdzanie czy składnia się zgadza, to zbędny bajer, ponieważ tym zajmuje się samo PHP. Max czym to się powinno zajmować to zamiana {foo} na <?php echo $foo;?> ... czy inne takie, aby skrócić czas pisania o całe 8 znaków wink.gif Po prostu jeszcze bardziej skrócona, alternatywna składnia jaką samo PHP również posiada.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Crozin
post
Post #32





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Hmmm... chociażby po to by dać mi znać w którym pliku i linii jest błąd składni szablonu, która nie musi być równoznaczna ze składnią PHP, a wygenerowany kod PHP wcale nie musi przekładać się linia-w-linię z szablonem? Już nawet nie komentuję reszty dotyczącej "maksymalnych zadań szablonu ograniczających się do zamiany <?php echo na {"...

Szablony nie służą zamianie składni, a wprowadzeniu nowych elementów bądź udoskonaleniu istniejących.
Go to the top of the page
+Quote Post
by_ikar
post
Post #33





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Cytat(!*! @ 11.07.2014, 19:34:12 ) *
Max czym to się powinno zajmować to zamiana {foo} na <?php echo $foo;?> ... czy inne takie, aby skrócić czas pisania o całe 8 znaków ;) Po prostu jeszcze bardziej skrócona, alternatywna składnia jaką samo PHP również posiada.


No właśnie to nie do końca tak zadziała. Bo parser będzie miał problemy ze wszystkim co jest pomiędzy klamrami. Wiem bo tworzyłem takiego potworka (kilka postów wyżej kod) i musiałem dodać blok ignore inaczej przy mieszaniu css/js poprostu potrafiły się trafić miejsca gdzie parser nie wyrabiał (nie pomyślałem wtedy o podwójnych klamrach..). Do tego echo nie może być wszędzie, np w takim przypadku:

  1. <?php echo if(true): ?>
  2.  
  3. something
  4.  
  5. <?php echo endif ?>


Dostaniesz parse error. Więc albo dodawać ręcznie echo:

Kod
{echo $zmienna}


Albo dodać jakiś "szybszy" sposób na dodanie tego echo. No i w moim przypadku była to małpa. No a jak wtedy użyć małpy? A no trzeba dodać kolejne wyrażenie dla podwójnej małpy @@. No i ten bezsens się ciągnie..
Go to the top of the page
+Quote Post
!*!
post
Post #34





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Wy to potraficie utrudniać sobie życie...

Cytat
Hmmm... chociażby po to by dać mi znać w którym pliku i linii jest błąd składni szablonu, która nie musi być równoznaczna ze składnią PHP, a wygenerowany kod PHP wcale nie musi przekładać się linia-w-linię z szablonem?


Nie wiem jak byś to napisał, ale linia w szablonie zawsze będzie równa linii w PHP i błąd składni będzie identyczny z tego pliku w jakim wystąpił. Patrz niżej.

@by_ikar - kwestia odpowiednich komend

Cytat
{$foo}
{if:isset($foo)}
{else}
{/if}

{foreach:$foo as $key}
{/foreach}


Chyba nie muszę tłumaczyć na co zostanie to zamienione, akceptowalne są tylko takie tagi, więc:

Cytat
{
if:isset(
$foo
)
}


Nie przejdzie, a skoro robimy include tego samego pliku PHP, to nie ma prawa wyskoczyć błąd w innym miejscu, tylko tam gdzie występuje.
Poważnie sprawdzacie błędy w plikach HTML/TPL? Ludzie...


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
marcus753
post
Post #35





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

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


Dzięki panowie ! wink.gif jeszcze nie zacząłem pisać a już mam gotowe przykłady i jeszcze różne błędy z którymi będę miał do czynienia

rozumiem że nie ma innego sposobu wywołania kodu jak przez include ?

nospor zakłada że będę miał plik już przeparsowany który będę mógł zainncludować tylko że jeśli na początku nie będę chciał korzystać z cache nie będę miał takiego pliku i tu pojawia się problem jak taki kod wywołać ? druga sprawa co jeśli cache będę robił za pomocą bazy danych mysql albo sesji ? również takiego pliku miał nie będę

Jeśli chodzi o składnie języka założyłem sobie coś takiego:

  1. {{zmienna}}
  2.  
  3. @if($zmienna)
  4. @endif
  5.  
  6. @for($i;$i++;$<10)
  7. @endfor;
  8.  
  9. @foreach($array as $key)
  10. @endforeach


dodatkowo chciałbym aby mój szablon składał się z 2 plików 1 plik to będzie kontretny kontent na zasadzie:

  1. @content('mojartykul')
  2. artykuł bla bla bla
  3. @stop
  4.  
  5. @content('sonda')
  6. moja sonda
  7. @stop
  8.  
  9. @layout('layout_main.php')


a w pliku layout_main będę miał główny layout strony gdzie tylko zaznaczę w kodzie

  1. @content('mojartykul')
  2.  
  3. @content('sonda')

i w te miejsca ma się wstawić kod z zaznaczonych sekcji, dzięki temu mogę mieć jeden szablon dla kilku widoków i jedynie zmieniać content

na chwilę obecną mam problem z:

- jak wyświetlić zawartość strony (ze znacznikami php) znajdującą się w zmiennej czy jest to wykonalne ?
- kiedy tworzyć nowy cache widoku a usuwać stary ?


do tego chciałbym mieć jeszcze możliwość includowania innych plików np. w szablonie móc sobie wstawić @include('menu') i wszystko świetnie mój parser zamieni mi to na <?php include('menu.php') ?> ale już nie przeparsuje samego pliku menu.php zastanawiam się jak to robią inne silniki np. blade ?
czy jeśli tam będę includował coś z pliku który includuje inny plik to czy ten ostatni też zostanie sparsowany ?

Tutaj rozwiązaniem byłoby najpierw przeparsowanie całego kodu przez php (includujemy wszystkie pliki) potem przeparsowanie moim parserem i następnie znowu parsowanie standardowym phpem i zapisanie wszystkiego do cache ale wydajność takiego rozwiązania pewnie będzie marna...

Ten post edytował marcus753 11.07.2014, 20:37:04


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
Crozin
post
Post #36





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Nie, nie zawsze linia z szablonu odpowiada linii z wynikowego pliku. Wystarczy chociażby komentarz w szablonie (a'la Twig):
Kod
<p>Hello World!</p>
{# blah blah blah #}

{# blah blah blah
     blah blah blah
     blah blah blah #}
<p>Witaj świecie</p>
I już masz wygenerowany kod w formie:
  1. <p>hello World!</p>
  2.  
  3. <p>Witaj świecie</p>
Nie mówiąc już o tym, że szablon może być skompilowany przykładowo do klasy, nie "surowego" pliku.
Go to the top of the page
+Quote Post
by_ikar
post
Post #37





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Cytat(!*! @ 11.07.2014, 21:09:15 ) *
Wy to potraficie utrudniać sobie życie...



Nie wiem jak byś to napisał, ale linia w szablonie zawsze będzie równa linii w PHP i błąd składni będzie identyczny z tego pliku w jakim wystąpił. Patrz niżej.

@by_ikar - kwestia odpowiednich komend



Chyba nie muszę tłumaczyć na co zostanie to zamienione, akceptowalne są tylko takie tagi, więc:



Nie przejdzie, a skoro robimy include tego samego pliku PHP, to nie ma prawa wyskoczyć błąd w innym miejscu, tylko tam gdzie występuje.
Poważnie sprawdzacie błędy w plikach HTML/TPL? Ludzie...


Tak ale wtedy jest już zupełnie nowy syntax, kolejny do nauczenia się, poznania jego wszystkich słabości.. IMO systemy szablonów w php to trochę na wyrost. Taki twig to nic innego jak jinja z django, a tam systemy szablonów mają o tyle sens, że nie użyjesz sobie pythona razem z html, tak jak to ma miejsce w przypadku php+html. Ale w przypadku php ? Pamiętam kiedyś prelekcje z php, i tam koleś mówił że programiści php to "złodzieje". Większość rzeczy próbujemy na siłę implementować z innych języków kompensując sobie pewne braki. Tyle że to nie ma sensu, kiedy php jest dobry sam w sobie jako system szablonów out of box. Tzn nie zrozum mnie źle, bo ja już trochę się pogubiłem i nie wiem już sam kto jest za a kto jest przeciw. Jedynie chcę podkreślić że jakiekolwiek systemy szablonów w php to proteza, która zupełnie niepotrzebny generuje narzut oraz dodatkową składnie - głównie w imię "nie bądźmy gorsi od innych języków" ..

@marcus753 - popatrz na klasę którą wkleiłem, jest ona dość prosta (w tym zawiera wrednego evala) i powinna ci co nieco powiedzieć jak mniej więcej powinno to wyglądać (a właściwie nie wyglądać, bo szablony są zbędne).
Go to the top of the page
+Quote Post
Crozin
post
Post #38





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Pamiętam kiedyś prelekcje z php, i tam koleś mówił że programiści php to "złodzieje".
Zapożyczenia z innych języków/platform to bardzo, bardzo dobra rzecz, a nie żadne "złodziejstwo".
Cytat
Tyle że to nie ma sensu, kiedy php jest dobry sam w sobie jako system szablonów out of box.
PHP w porównaniu do takiego chociażby Twiga wypada słabo, chociaż tak... można go używać bezpośrednio.
Cytat
[...] która zupełnie niepotrzebny generuje narzut oraz dodatkową składnie - głównie w imię "nie bądźmy gorsi od innych języków" ..
Nie, szablony w PHP to głównie idea: PHP bezpośrednio w szablonach jest niewygodne i nieefektywe, więc stworzono narzędzie, które rozwiązuje pewne problemy jakie czyste PHP powoduje.

Cytat
@marcus753 - popatrz na klasę którą wkleiłem, jest ona dość prosta (w tym zawiera wrednego evala) i powinna ci co nieco powiedzieć jak mniej więcej powinno to wyglądać (a właściwie nie wyglądać, bo szablony są zbędne).
To co tam zaprezentowałeś faktycznie pokazuje jak tego nie robić - ale nie ze względu na bezsensowność szablonów jako takich tylko prymitywną i pełną ograniczeń realizację.
Go to the top of the page
+Quote Post
by_ikar
post
Post #39





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Cytat(Crozin @ 11.07.2014, 22:47:26 ) *
Zapożyczenia z innych języków/platform to bardzo, bardzo dobra rzecz, a nie żadne "złodziejstwo".
PHP w porównaniu do takiego chociażby Twiga wypada słabo, chociaż tak... można go używać bezpośrednio.
Nie, szablony w PHP to głównie idea: PHP bezpośrednio w szablonach jest niewygodne i nieefektywe, więc stworzono narzędzie, które rozwiązuje pewne problemy jakie czyste PHP powoduje.

To co tam zaprezentowałeś faktycznie pokazuje jak tego nie robić - ale nie ze względu na bezsensowność szablonów jako takich tylko prymitywną i pełną ograniczeń realizację.


Nie twierdze że zapożyczenia są złe, mi chodziło (i temu gościowi również) o tworzenie odpowiedników czegoś, co się sprawdza w innych językach, a nie koniecznie w php.
A co takiego ma twig, czego nie ma php, albo w php nie można zrobić? Jest to jakiś moduł php? No nie bardzo. Aha, czyli do kilku pomocniczych funkcji dla widoku, dorobimy sobie zupełnie nową składnie - bądźmy innowacyjni.
Niewygodne to mogą być za małe buty. To jest kwestia przyzwyczajenia, tak samo jak się przyzwyczajasz do nowej składni, pierdyliardowej wersji super nowego, ulepszonego systemu szablonów.

Tak, ta realizacja "mojej" wersji szablonów jest prymitywna i ograniczona, bo już na etapie początkowym, zdałem sobie sprawę, że jest to bezsensu. Lepiej napisać jakąś klasę lub funkcję pomocniczą, niż dorabiać do tego nową składnie. No i robiłem to bardziej jak autor tematu - w celach naukowych, tyle że miałem ciut inną wiedzę.
Go to the top of the page
+Quote Post
nospor
post
Post #40





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
nospor zakłada że będę miał plik już przeparsowany który będę mógł zainncludować tylko że jeśli na początku nie będę chciał korzystać z cache nie będę miał takiego pliku i tu pojawia się problem jak taki kod wywołać ? druga sprawa co jeśli cache będę robił za pomocą bazy danych mysql albo sesji ? również takiego pliku miał nie będę
Powinienies sparsowany szablon trzymac w pliku php. W przeciwnym wypadku ten twoj system szablonow, ktory juz teraz nie ma racji bytu, nie bedzie mial juz w ogole racji bytu. Jesli bedzie lecial jakis blad, to w zyciu nie dowiesz sie skad on leci. Gdy kod bedzie w pliku php, to bedziesz wiedzial gdzie ten blad jest i bedzie mozna go poprawic.
Poza tym ciagle i ciagle parsowanie jest bez sensu. Predzej czy później musisz to zapisywac w plikach, wiec zacznij od razu a nie bedziesz dwukrotnie robil roboty "glupiego"


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Crozin
post
Post #41





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
A co takiego ma twig, czego nie ma php, albo w php nie można zrobić?
Twig jest napisany w PHP więc z definicji nie ma w nim niczego czego nie dałoby się zrobić z poziomu PHP. Jednak oferuje on inne środowisko pracy:
- budowanie szablonu z dołu-do-góry, a nie od góry-do-dołu jak ma to miejsce przy "zwykłym, czystym" PHP,
- wbudowane automatyczne filtrowanie wyświetlanych danych, również dla kontekstów innych niż tekst w HTML-u,
- sandbox,
- expression language,
- prostszy i mniej podatny na błędy ekosystem dla osób nie znających PHP zbyt dobrze.

A szablony to nie tylko twory pokroju Twiga, możesz w końcu mieć chociażby XML-a z PHPTalem.
Go to the top of the page
+Quote Post
!*!
post
Post #42





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


@Crozin - obaj mamy inne podejście do szablonów, dla mnie to nie jest nowy język z funkcjami np. tak jak wspomniałeś komentarze {# xxx#} ... Zupełnie zbędna rzecz, tak samo jak zamiana X na Y, ale niektórzy to lubią i czasami jest to czytelniejsze, bo nie każdy używa alternatywnej składni PHP, a jedzie na klamrach...

@by_ikar - Twój kawałek kodu byłby dobry gdybyś ograniczył tagi do określonych a nie brał wszytko z marszu... i ten eval...


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
by_ikar
post
Post #43





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Cytat(!*! @ 12.07.2014, 11:30:28 ) *
@by_ikar - Twój kawałek kodu byłby dobry gdybyś ograniczył tagi do określonych a nie brał wszytko z marszu... i ten eval...


Zdaje sobie z tego sprawę, to jest mój dość stary potworek który, którego pomysł został zarzucony niemal na starcie, poprostu idea szablonowania mi przeszła..

Cytat(Crozin @ 12.07.2014, 10:10:13 ) *
Twig jest napisany w PHP więc z definicji nie ma w nim niczego czego nie dałoby się zrobić z poziomu PHP.


Skoro tak, to może warto użyć samych helperów zamiast tworzyć kolejną abstrakcje? IMO całe szczęście symfony daje wybór co do szablonów i nie trzeba być przymuszanym do czegoś, czego się nie popiera ;)

PS. jak dobrze pamiętam @crozin to jest już n'ty temat w którym się o te szablony spieramy biggrin.gif ostatni raz było to jakieś ~2 lata temu, zanim za "chlebem" nie wyjechałem.

Ten post edytował by_ikar 12.07.2014, 12:56:20
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 Aktualny czas: 22.08.2025 - 07:57