Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Własny tag html
Forum PHP.pl > Forum > Przedszkole
Johnas
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.
skowron-line
Zobacz jak to w Smarty albo Twigu jest zrobione, bo podejrzewam że do systemu szablonów Ci to potrzebne.
by_ikar
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.
Johnas
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?
skowron-line
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.
Sephirus
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
skowron-line
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
Sephirus
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

skowron-line
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.
by_ikar
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..
Johnas
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.
by_ikar
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 ?>.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.