Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Jak oddzielić PHP od kodu HTML?
Forum PHP.pl > Forum > Przedszkole
qjam
Witam.

Dzisiaj postanowiłem pierwszy raz od paru lat przysiąść do php. Tak dla treningu, dla zabicia czasu, po prostu z nudów. Kiedyś pisałem jedynie strukturalnie... wychodziły potworki (przy pisaniu bloga) których teraz chciałbym uniknąć. Bardzo chętnie oddzieliłbym PHP od HTMLa (wiem, istnieje Smarty i MVC) jednak nigdy nie ruszyłem programowania obiektowego... stąd moje pytanie, w jaki sposób wy oddzielacie HTML od PHP? Macie jakieś rady? A może macie jakieś linki do nauki OOP? Programowałem hobbistycznie i chciałbym aby tak zostało dlatego nie są to mega ważne projekty... robię to po prostu dla siebie. Czekam na odpowiedzi, pozdro smile.gif
ZaXaZ
Cytat(qjam @ 5.04.2014, 14:44:03 ) *
Witam.

Dzisiaj postanowiłem pierwszy raz od paru lat przysiąść do php. Tak dla treningu, dla zabicia czasu, po prostu z nudów. Kiedyś pisałem jedynie strukturalnie... wychodziły potworki (przy pisaniu bloga) których teraz chciałbym uniknąć. Bardzo chętnie oddzieliłbym PHP od HTMLa (wiem, istnieje Smarty i MVC) jednak nigdy nie ruszyłem programowania obiektowego... stąd moje pytanie, w jaki sposób wy oddzielacie HTML od PHP? Macie jakieś rady? A może macie jakieś linki do nauki OOP? Programowałem hobbistycznie i chciałbym aby tak zostało dlatego nie są to mega ważne projekty... robię to po prostu dla siebie. Czekam na odpowiedzi, pozdro smile.gif



niewiem czy dobrze zrozumialem ale jak oddzielic html od php zeby nie komplikowalo to powinienes podac kod jaki masz bo za duzo by tlumaczyc a jak sie pokaze to latwo zrozumiec tongue.gif .
qjam
wiesz... dopiero siadam... wink.gif ale moj kod przypuszczalnie wyglądałby tak:

index.php

  1. <html>
  2. <head>
  3. .....
  4. </head>
  5. <?php
  6. //kod php
  7. ?>
  8. <form method="post">
  9. ...logowanie...
  10. </form>
  11. <?
  12. if(isset($_POST['zaloguj'].....
  13.  
  14. tutaj jakis mysql...
  15. ?>
  16. </html>


taki potworek tongue.gif
ZaXaZ
Cytat(qjam @ 5.04.2014, 15:03:59 ) *
wiesz... dopiero siadam... wink.gif ale moj kod przypuszczalnie wyglądałby tak:

index.php

  1. <html>
  2. <head>
  3. .....
  4. </head>
  5. <?php
  6. //kod php
  7. ?>
  8. <form method="post">
  9. ...logowanie...
  10. </form>
  11. <?
  12. if(isset($_POST['zaloguj'].....
  13.  
  14. tutaj jakis mysql...
  15. ?>
  16. </html>


taki potworek tongue.gif


ogólnie masz dobrze z tego co podales tylko powinieneś dodać drobne poprawki:

za </head> dodać <body>, przed </html> </body> (działa i bez tego ale zawsze jest pewność),
co do drugiej części php (<?) zamien na <?php ponieważ <? jest wycofywane, a jak dziala kod php w tym to nie cały.
qjam
Doskonale o tym wiem... wink.gif Celowo nie napisałem tego tutaj bo się spieszyłem. Jednak chodzi mi o to czy jest jakiś sposób żeby oddzielić PHP od HTMLa lub zminimalizować jego udział. Tak jak mówiłem wiem co to MVC ale nie znam OOP żeby to stosować, to raz. Dwa, że wiem że w formularzach mogę użyc action='logowanie.php' ale nie wszędzie da się to zrobić...
ZaXaZ
Cytat(qjam @ 5.04.2014, 15:15:05 ) *
Doskonale o tym wiem... wink.gif Celowo nie napisałem tego tutaj bo się spieszyłem. Jednak chodzi mi o to czy jest jakiś sposób żeby oddzielić PHP od HTMLa lub zminimalizować jego udział. Tak jak mówiłem wiem co to MVC ale nie znam OOP żeby to stosować, to raz. Dwa, że wiem że w formularzach mogę użyc action='logowanie.php' ale nie wszędzie da się to zrobić...


zminimalizować można if'ami tongue.gif - coś nie zostanie spełnione to nie wykona, zmniejszyć ogólnie można np. Załadować plik przez include etc, OOP chyba na wikibooks najlepiej.
qjam
Ty nadal nie wiesz o co chodzi... rzeczywiście dział przedszkole smile.gif ok, nieważne wink.gif dzięki
viking
Najlepiej było by wykorzystać jakiś prosty framework. Ale skoro sam mówiłeś z nudów chcesz się pouczyć to masz wyzwanie teraz smile.gif
Systemy szablonów które mogą ci w tym pomóc:
http://twig.sensiolabs.org/
http://phptal.org/

Dane wejściowe tablice albo obiekty. Smarty, ktoś jeszcze tego używa? wink.gif

Możesz też iść inną drogą i pobawić się we frameworki JS.
http://emberjs.com/ - bardzo silnie MVC i moim zdaniem obecnie wart największej uwagi
http://angularjs.org/ - według mnie śmietnik jak wszystko od Google ale popularny
http://backbonejs.org/

Dane wypełniać tylko na podstawie otrzymanych zmiennych JSON/REST z PHP. Do takiej pracy sprawdzają się dobrze rozwiązania gdzie piszesz bardziej "pod adres" (router gra główną rolę) typu Silex.
qjam
Smarty było popularne gdy ja pisałem w PHP ('04-'05?) smile.gif Nie jestem na bieżąco. Właśnie miałem na myśli jakiś system szablonów. Co dają frameworku JS? Widziałem dojo i nieźle wyglądają te okienka. Byłby fajny panel administracyjny smile.gif a te które wymieniłeś? Jakie mają zastosowanie?
viking
Z całą pewnością bedziesz się musiał trochę poduczyć bo 10 lat to przepaść. Większość projektów opiera się o klasy i przestrzenie nazw. Więc co najmniej podstawy są niezbędne. Uważam że dobry byłby dla ciebie właśnie http://silex.sensiolabs.org/ . Nadaje się idealnie do małych projektów stawianych na szybko, można się go w niedługim czasie nauczyć a że bazuje na Symfony to przy okazji czegoś się dowiesz o większym bracie. Frameworki / biblioteki JS. No cóż, musisz popatrzeć na przykłady. Jeśli nie chcesz wchodzić głęboko w PHP mogą zrzucić całą logikę na przeglądarkę z danymi w postaci np JSON od PHP. Jeśli znasz JS będzie to droga na skróty do nauki.
qjam
Są jakieś polskojęzyczne teksty związane z tym silexem? Kiedyś próbowałem sił w Kohanie wink.gif Ale po prostu nie ogarnąłem tego...
viking
Google translate?
Po polsku to chyba tylko inny FW http://spawnframework.com/
PrinceOfPersia
Cytat
Celowo nie napisałem tego tutaj bo się spieszyłem. Jednak chodzi mi o to czy jest jakiś sposób żeby oddzielić PHP od HTMLa lub zminimalizować jego udział.

to co możesz od ręki zrobić, to zamiast mieszać PHP z MySQL i HTML tak jak wrzuciłeś:
  1. <?php
  2. //kod php
  3. ?>
  4. <form method="post">
  5. ...logowanie...
  6. </form>
  7. <?
  8. if(isset($_POST['zaloguj'].....
  9.  
  10. tutaj jakis mysql...
  11. ?>
  12. </html>

możesz zrobić tak, że w pliku wszystkie obliczenia i dostęp do MySQL robisz na początku, a później dajesz tylko same zmienne:
  1. <?php
  2.  
  3. if(isset($_POST['zaloguj']) {
  4. // tutaj jakis mysql ,np. SELECT user_name FROM .... WHERE. ......
  5. // bla, bla
  6. $userName = $row['user_name'];
  7. }
  8.  
  9. if ($_GET['action'] == 'messages') {
  10. /// jakis mysql...
  11. // bla, bla, bla...
  12. $messages = $row['user_name'];
  13.  
  14. }
  15.  
  16. // a w dalszej części pliku odwołujesz się tylko do zmiennych:
  17. ?>
  18.  
  19. Witamy, dziękujemy za zalogowanie, użytkowniku <?php echo $userName ?>,
  20. <ul>
  21. Twoje wiadomości: <?php foreach($messages as $msg) echo "<li>$msg</li>" ?>
  22. </ul>
  23.  


Tylko, że to jest partyzantka i sposób dla osób naprawdę leniwych (ja tak robiłem jak poprawiałem po kimś kod, i po prostu nie mogłem użyć szablonów), natomiast takie podejście i tak jest ciut lepsze od mieszania kompletnie wszystkiego naraz. No i w przypadku kiedy będziesz chciał przejść na szablon, bardzo łatwo zamienisz po prostu deklaracje, czyli np. wywalisz <?php echo $messages ?>, a napiszesz {{ messages }},czy coś podobnego. Ponieważ kod PHP/MySQL oraz wynikowe zmienne do szablonu($userName, $messages etc.) masz już wstępnie oddzielone.

ale tak naprawdę użycie szablonu to nie jest problem, wystarczy ściągnąć coś, zainstalować, popatrzeć na przykłady w necie.


Cytat
Tak jak mówiłem wiem co to MVC ale nie znam OOP żeby to stosować, to raz.

nikt ci nie każe zaawansowanego OOP robić, zwykle masz tylko jakiś mikrojęzyk szablonów (typu "w klamerkach podajemy nazwę zmiennej: {{ zmienna }}"), musisz je zainicjalizować, podać dane przez funkcję i wyrenderować, cała filozofia.
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.