Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Własny tag html
Johnas
post
Post #1





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


Witam! Czy da się w php zrobić jakoś tag który jest automatycznie zamieniany?

Załóżmy że mam takie coś:
  1. <?php
  2. echo <<< TPL
  3. <html>
  4.   <head>
  5.   <title>{$title}</title>
  6.   </head>
  7.   <body>
  8.  
  9.   tekst tekst tekst
  10.   </body>
  11. </html>
  12. TPL;


i chciał bym dodać znacznik
  1. <if!$zmienna == cos>tekst wyświetlany po spełnieniu warunku</if>

tworzyło by kod:
  1. TPL;
  2. if ($zmienna == cos){
  3. echo 'tekst wyświetlany po spełnieniu warunku';
  4. }
  5. echo <<< TPL


Jest coś takiego możliwe? Szukam po manualu ale nie mogę znaleźć a nie chcę autorskiego systemu szablonów.


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
skowron-line
post
Post #2





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

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


Zobacz jak to w Smarty albo Twigu jest zrobione, bo podejrzewam że do systemu szablonów Ci to potrzebne.


--------------------
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
by_ikar
post
Post #3





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

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


Kod
TPL;
    if ($zmienna == cos){
    echo 'tekst wyświetlany po spełnieniu warunku';
    }
echo <<< TPL


Ten heredoc jest niestety nie poprawny wink.gif IMO nie trzeba mieć skomplikowanego systemu szablonów (smarty/twig) aby móc osiągnąć podobną funkcjonalność z mniejszym nakładem kodu. A smarty jest niestety średnie.

EDIT:

Cytat
Jest coś takiego możliwe? Szukam po manualu ale nie mogę znaleźć a nie chcę autorskiego systemu szablonów.


php nie udostępnia sam z siebie to czego poszukujesz. Nie mniej, możesz zrobić swój "autorski system" szablonów który IMO nie będzie skomplikowany, i raczej jeżeli dobrze go sobie rozplanujesz będzie bardziej wydajny niż te dostępne (smarty/twig i tym podobne). Osobiście ostatnio coś takiego na własne potrzeby skleiłem i jedyne o czym tam trzeba pamiętać to że zamiast <?php oraz ?> używać można odpowiednio { oraz } dzięki czemu w miarę ładniej to wygląda. A php samo w sobie udostępnia alternatywny sposób zapisywania instrukcji warunkowych:

Kod
<?php

if(1 == 1):
    echo 'równe';
endif;


Trochę więcej pisałem o tym w tym temacie: http://forum.php.pl/index.php?showtopic=181343#entry887114 masz tam przedstawioną alternatywną składnie bloków warunkowych i pętli, trochę niżej masz też jak wygląda mój templatek oraz jego cache.

Ten post edytował by_ikar 3.11.2011, 11:09:37
Go to the top of the page
+Quote Post
Johnas
post
Post #4





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


Patrzę te smarty, ale nie mogę szczerze mówiąc znaleźć funkcji która by zamieniała tekst. Może miał ktoś z was już styczność z czymś takim?


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
skowron-line
post
Post #5





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

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


Używanie szablonów nigdy nie jest bardziej wydajne niż pisanie w czystym PHP mieszanym z HTML. Ja osobiście nie używam bo tak jak napisałem jest to strata wydajności. Bo jednak przetworzenie szablonu trwa.


--------------------
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
Sephirus
post
Post #6





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Ja dodam tylko, że z tą wydajnością wcale nie musi być tak źle przy założeniu, że posiadamy prosty system szablonów oraz, że je cache'ujemy to wynikowy kod zcache'owanych plików jest prawie tak samo wydajny jak pisany z palca - oczywiście jeżeli weźmiemy wielki kombajn jak smarty i do tego skomplikowany widok to nie odpowiadam za to co będzie w pliku wyjściowym do obsłużenia przez PHP smile.gif Wszystko z głową wink.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
skowron-line
post
Post #7





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

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


Cytat(Sephirus @ 3.11.2011, 14:16:32 ) *
Ja dodam tylko, że z tą wydajnością wcale nie musi być tak źle przy założeniu, że posiadamy prosty system szablonów oraz, że je cache'ujemy to wynikowy kod zcache'owanych plików jest prawie tak samo wydajny jak pisany z palca - oczywiście jeżeli weźmiemy wielki kombajn jak smarty i do tego skomplikowany widok to nie odpowiadam za to co będzie w pliku wyjściowym do obsłużenia przez PHP smile.gif Wszystko z głową wink.gif


Cache + czysty PHP
VS
Cache + szablon + klasa do jego przetworzenia ( i oczywiście trzeba pamiętać że takiego systemu szablonów trzeba się nauczyć)

Wydaje mi się że jest to bez sensu no ale może się nie znam bo nie używałem i nie używam systemu szablonów


--------------------
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
Sephirus
post
Post #8





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


To nie jest tak ;P

Normalnie masz tak:

PHP:

Dane -> PHP -> STRONA

Z szablonami (prostymi, które mają ułatwić parę rzeczy) masz tak:

#1 wywołanie po edycji szablonu:
Dane -> (Szablon -> utworzenie kodu PHP -> PHP (czyli plik cache)) -> STRONA

#każde kolejne:
Dane -> PHP -> STRONA

Wydajność spada nieznacznie na jakości tego wygenerowanego PHP. Jak się to sprytnie zrobi - to można w zasadzie nie ujmując wydajności pisać łatwiej i o wiele zrozumialej wink.gif

Ale to zależy kto co lubi ;P



--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
skowron-line
post
Post #9





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

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


Tu jest
http://fabien.potencier.org/article/34/tem...-engines-in-php dobry artykuł na temat systemu szablonów i tego co i jak z PHPem, natomiast mnie to jakoś nie przekonuje.


--------------------
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
by_ikar
post
Post #10





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

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


Cytat
Wydajność spada nieznacznie na jakości tego wygenerowanego PHP. Jak się to sprytnie zrobi - to można w zasadzie nie ujmując wydajności pisać łatwiej i o wiele zrozumialej


Ameryki nie odkryłem, ale u mnie, mój "system szablonów" to jest nic innego jak 2 wyrażenia które zamiast klamer wstawiają tagi html. Przykład podałem w tym poście: http://forum.php.pl/index.php?showtopic=181343#entry889424 i pisze sobie albo z klamrami albo normalne tagi php, tak czy inaczej to system szablonów mnie w żaden sposób nie ogranicza, jedynie momentami mogą być problemy z mieszaniem JS i php, ale jak już się raz to zrobi to potem idzie już bezproblemowo. Cache to tak jak napisałeś, wygenerowany kod php który wygląda tak jakbym sam pisał <?php echo $zmienna ?> i w działaniu póki co jest tak samo szybki, bo każdy plik includuje, nie używam evala, więc szczerze mówiąc używam klasycznego sposobu mieszania php i html, tyle że ułatwiłem sobie początkową fazę, czyli klepanie otwierających i zamykających tagów php na rzecz klamer. Nie tworze jakiejś udziwnionej składni, bo jak napisałem w tym temacie, oraz tym: http://forum.php.pl/index.php?showtopic=181343#entry889424 moim zdaniem php nie potrzebuje szablonów typu smarty czy twig żeby zapis instrukcji warunkowych czy pętli jakoś wyglądał w kodzie html wink.gif póki co jestem zadowolony, na żadne ograniczenie szablonu nie trafiłem, a w przypadku smarty w kilku przypadkach niestety musiałbym pisać jakiś plugin..
Go to the top of the page
+Quote Post
Johnas
post
Post #11





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


Panowie rozpisujecie się o wielkich systemach szablonów typu Smarty a ja chcę tylko tą jedną funkcje napisać smile.gif Tylko to mi jest potrzebne do sprawdzania w szablonie czy jest ktoś zalogowany albo czy $wynik został wykonany, aby wyświetlić odpowiedni tekst.


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
by_ikar
post
Post #12





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

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


Cytat(Jonek_1993 @ 3.11.2011, 14:57:54 ) *
Panowie rozpisujecie się o wielkich systemach szablonów typu Smarty a ja chcę tylko tą jedną funkcje napisać smile.gif Tylko to mi jest potrzebne do sprawdzania w szablonie czy jest ktoś zalogowany albo czy $wynik został wykonany, aby wyświetlić odpowiedni tekst.


Nie wszyscy się rozpisują o wielkich systemach szablonów, napisałem ci jak można to wykonać w php, wskazałem ci temat gdzie ja sam dopiero robiłem swój system szablonów. U mnie warunek który pokazałeś w pierwszym poście:

Kod
<if!$zmienna == cos>tekst wyświetlany po spełnieniu warunku</if>


wyglądałby tak:

Kod
{if(!$zmienna == cos):} tekst wyświetlany po spełnieniu warunku {endif}


po kompilacji:

Kod
<?php if(!$zmienna == cos): ?> tekst wyświetlany po spełnieniu warunku <?php endif ?>


reasumując, tobie nie potrzebny nowy znacznik, bo możesz to zapisać w taki sposób jaki podałem wyżej (po kompilacji), ale możesz też wykonać na swoje potrzeby proty system szablonów (tak jak ja) który zdejmie przerobi klamry { } na tagi pgp <?php ?>.
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 Aktualny czas: 19.08.2025 - 09:14