Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Parser szablonów
akurczyk
post 21.12.2008, 18:19:21
Post #1





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


Napisałem coś takiego:
  1. <?php
  2. $szablon = file_get_contents("szablon.html");
  3. preg_match("#{newsy}(.*?){/newsy}#si", $szablon, $znalezione);
  4. $tablica[0]["tytul"] = "Pierwszy news";
  5. $tablica[0]["tresc"] = "Treść pierwszego newsa";
  6. $tablica[1]["tytul"] = "Drugi news";
  7. $tablica[1]["tresc"] = "Treść drugiego newsa";
  8. $tablica[2]["tytul"] = "Trzeci news";
  9. $tablica[2]["tresc"] = "Treść trzeciego newsa";
  10. foreach($tablica as $wartosc) {
  11.    $temp = str_replace("{tytul}", $wartosc["tytul"], $znalezione[1]);
  12.    $newsy_array[] = str_replace("{tresc}", $wartosc["tresc"], $temp);
  13. }
  14. $newsy = join("", $newsy_array);
  15. $szablon = preg_replace("#{newsy}(.*?){/newsy}#si", $newsy, $szablon);
  16. echo $szablon;
  17. ?>


Szablon:
  1. <title>Newsy</title>
  2. </head>
  3. {newsy}
  4. <h2>{tytul}</h2>
  5. <p>{tresc}</p>
  6. {/newsy}
  7. </body>
  8. </html>


Wydaje mi się że jest to nieoptymalene, i nieprofesjonalnie napisane. Proszę o jakieś sugestje. Co powinienem w tym zmienić??


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
Riklaunim
post 21.12.2008, 18:41:25
Post #2





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

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


Napisz to w Javie to będzie bardzo profesjonalne winksmiley.jpg A tak na poważnie stworzyłeś prosty kod i nie ma co tu dramatyzować z pisaniem tego "profesjonalnie" - bo "profesjonalne" rozwiązanie polegałoby na stworzeniu systemu szablonów ogólnego przeznaczenia ze znacznie większą ilością możliwości (smarty, opt i inne).


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
l0ud
post 21.12.2008, 18:53:39
Post #3





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Istota działania jest zła. Systemy szablonów które tworzą swój nowy język (jak smarty) to przeszłość. Zrezygnuj z szablonów tego typu, a zastąp to czystym PHP, tylko odpowiednio oddzielonym:

index.php
  1. <?php
  2.  
  3. include('views.php');
  4.  
  5. $tablica[0]["tytul"] = "Pierwszy news";
  6. $tablica[0]["tresc"] = "Treść pierwszego newsa";
  7. $tablica[1]["tytul"] = "Drugi news";
  8. $tablica[1]["tresc"] = "Treść drugiego newsa";
  9. $tablica[2]["tytul"] = "Trzeci news";
  10. $tablica[2]["tresc"] = "Treść trzeciego newsa";
  11.  
  12. $szablon = new view('szablon');
  13.  
  14. $szablon->news = $tablica;
  15.  
  16. $szablon->source = new view('szablon');
  17. $szablon->source->news = $tablica;
  18.  
  19. echo $szablon;
  20.  
  21. ?>


views.php
  1. <?php
  2.  
  3. define('VIEWS_DIR','szablony/');
  4. define('PHP_EXT','.php');
  5.  
  6. class view {
  7.  
  8.    private $viewName;
  9.    private $contents = array();
  10.    
  11.    public function __construct($viewName) {
  12.        if (file_exists(VIEWS_DIR.$viewName.PHP_EXT) === false)
  13.            //obsługa błędu - przykładowa - można zmienić na wyjątek etc.
  14.            exit('Plik szablonu nie istnieje');
  15.        $this->viewName = $viewName;
  16.    }
  17.    
  18.    public function __get($name) {
  19.        if (isset($this->contents[$name]))
  20.            return $this->contents[$name];
  21.        else return null;
  22.    }
  23.    
  24.    public function __set($name, $value) {
  25.        $this->contents[$name] = $value;
  26.    }
  27.    
  28.    public function render() {
  29.        if (!include(VIEWS_DIR.$this->viewName.PHP_EXT))
  30.            //obsługa błędu
  31.            exit('Błąd dołączania szablonu');
  32.    }
  33.    
  34.    public function __toString() {
  35.        ob_start();
  36.        $this->render();
  37.        $output = ob_get_contents();
  38.        ob_end_clean();
  39.        return $output;
  40.    }
  41.    
  42. }
  43.  
  44. ?>


szablony/szablon.php
  1. <title>Newsy</title>
  2. </head>
  3. <?php foreach ($this->news as $news) { ?>
  4. <h2><?php echo $news['tytul']; ?></h2>
  5. <p><?php echo $news['tresc']; ?></p>
  6. <?php } ?>
  7. <hr>
  8. <p>Źródło:</p>
  9. <textarea rows="10" cols="50"><?php echo htmlspecialchars($this->source); ?></textarea>
  10. </body>
  11. </html>


Jest to chyba najprostszy przykład, jak to można zrobić, aby pracowało się wygodnie smile.gif Szablony można zagnieżdżać (jak jest w przykładzie - zagnieżdżone jest generowanie źródła strony z szablonu i wstawianie go w textarea). W ten sposób możesz stworzyć całe drzewko szablonów reprezentujące stronę. smile.gif

Pamiętaj tylko, aby w szablonie zminimalizować ilość kodu PHP i zajmować się TYLKO wyświetlaniem danych podanych przez skrypt!

Ten post edytował l0ud 21.12.2008, 18:54:58


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
Riklaunim
post 21.12.2008, 19:07:16
Post #4





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

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


Cytat(l0ud @ 21.12.2008, 20:53:39 ) *
Istota działania jest zła. Systemy szablonów które tworzą swój nowy język (jak smarty) to przeszłość.


To dlaczego nikt nie rezygnuje z takiej składni szablonów? smile.gif IMHO obecność języka skryptowego w szablonach doprowadza do tego że nagle pojawia się w nich jakaś logika, co jest złe. Mając w pamięci "szablony" CodeIgnitera powiem że szablony z PHP to rozwiązanie dalekie od ideału (choć sprawdza się dla najprostszych skryptów). Dobry przykład to szablony Django - http://docs.djangoproject.com/en/dev/topic...opics-templates i klon dla PHP: http://www.beberlei.de/calypso/ - ogólny pomysł i większość składni jest jak najbardziej udana i warto na czymś takim się opierać.


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
akurczyk
post 21.12.2008, 19:18:13
Post #5





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


A co z optymalnością mojego skryptu??


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
Riklaunim
post 21.12.2008, 19:28:38
Post #6





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

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


Duży ruch ci raczej nie grozi, więc i trudno mówić o wydajności danego rozwiązania. Operacje na długich łańcuchach mogą trochę zajmować, ale ogólnie większym "problemem" wydajnościowym będzie pobieranie danych - np. z bazy danych.


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
l0ud
post 21.12.2008, 19:33:34
Post #7





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


  1. <?php
  2. IMHO obecność języka skryptowego w szablonach doprowadza do tego że nagle pojawia się w nich jakaś logika, co jest złe.
  3. ?>


Wg mnie, o ile logika ogranicza się do wyświetlania, nie ma żadnego problemu. Zawsze można np. do klasy view dopisać metody pomocnicze, np. cycle(), co umożliwi np. takie coś:

  1. <?php foreach ($this->data as $row) { ?>
  2. <tr>
  3. <td class="color<?php echo $this->cycle(array('1','2')); ?>"><?php echo $row[1]; ?></td>
  4. <td><?php echo $row[2]; ?></td>
  5. </tr>
  6. <?php } ?>


Po pobieżnej analizie przykładów z dokumentacji szablonów Django nie widzę żadnych istotnych korzyści (prócz minimalnym uproszczeniem zapisu) z dołączania dodatkowego kodu typu Calypso. Ale jak kto woli smile.gif Ja tam polecam wg. mnie najprostsze rozwiązanie, czyli 'bezpośrednie' stosowanie PHP - bo przecież po to ono jest? smile.gif


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
akurczyk
post 21.12.2008, 19:44:27
Post #8





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


Jeszcze jedno:
Załużmy że w szablonie mam:
Kod
<html>
<head>
<title>Newsy</title>
</head>
<body>
{zalogowany}
<h2>Jesteś zalogowany jako: {login}!</h2>
{/zalogowany}
{niezalogowany}
<h2>Nie jesteś zalogowany!</h2>
{/niezalogowany}
</body>
</html>

W przypadku zalogowania, w skrypcie zamieniam niezalogowany na "nic", a zalogowany na zalogowany bez {zalogowany}{/zalogowany}. Jak wywalić te tagi {zalogowany}{/niezalogowany}, tak aby to co jest po między nimi zostąło nienaruszone??


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
Riklaunim
post 21.12.2008, 20:11:46
Post #9





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

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


Cytat(l0ud @ 21.12.2008, 21:33:34 ) *
Wg mnie, o ile logika ogranicza się do wyświetlania, nie ma żadnego problemu. Zawsze można np. do klasy view dopisać metody pomocnicze, np. cycle(), co umożliwi np. takie coś:

Po pobieżnej analizie przykładów z dokumentacji szablonów Django nie widzę żadnych istotnych korzyści (prócz minimalnym uproszczeniem zapisu) z dołączania dodatkowego kodu typu Calypso. Ale jak kto woli smile.gif Ja tam polecam wg. mnie najprostsze rozwiązanie, czyli 'bezpośrednie' stosowanie PHP - bo przecież po to ono jest? smile.gif


Kod
<?php } ?>

Ładnie to nie wygląda, front-end designer zapewne coś pokopie w tego typu znacznikach... plus jak tego trochę zagnieździsz to będzie jeszcze gorzej. Przydają się też takie funkcjonalności jak dziedziczenie szablonów, obsługa bloków itd. I nie należy zakładać że programista posłucha się ciebie żeby nie wrzucać do szablonu logiki. Jeżeli może - to to zrobi. Swego czasu używałem CI, teraz używam Django i nie mam najmniejszej ochoty ponownie stosować "szablony" zawierające w sobie język skryptowy plus z brakiem funkcjonalności typowych szablonów.


Cytat(akurczyk @ 21.12.2008, 21:44:27 ) *
W przypadku zalogowania, w skrypcie zamieniam niezalogowany na "nic", a zalogowany na zalogowany bez {zalogowany}{/zalogowany}. Jak wywalić te tagi {zalogowany}{/niezalogowany}, tak aby to co jest po między nimi zostąło nienaruszone??

Tworzenie statycznych bloków nie jest zbyt elastyczne ({zalogowany}{/zalogowany}, czy {wiadomości}{/wiadomości}), bo to trochę ogranicza elastyczność parsera. W Django wygląda to ogólnie tak:
Kod
{% if user %}
Witaj {{ user }}
{% else %}
Witaj nieznajomy
{% endif %}

Gdzie za logikę szablonu odpowiada warunek IF wykonany na zmiennej przekazanej do szablonu z widoku.

Ten post edytował Riklaunim 21.12.2008, 20:12:46


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
Crozin
post 21.12.2008, 20:26:17
Post #10





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

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


  1. <?php
  2. }
  3. ?>
Też miałem pisać, żeby takiego czegoś za żadne skarby świata w szablon nie pakować winksmiley.jpg
  1. <body>
  2.  <?php forach($a as $b): ?>
  3.  <blah blah></blah blah>
  4.  <?php endforeach; ?>
  5. </body>
I analogicznie: for(): endfor, if(): elseif():, else:, endif;, while():, endwhile(), foreach(), endforeach()

@autor:
Naprawdę nie ma sensu bawić się w takie "systemy szablonów". Jest to wyjątkowo niewygodne (każdy będzie się musiał uczyć nowego zestawu znaczników), w Twoim przypadku kompletnie nieelastyczne - nie ma możliwości zrobienia tak prostej rzeczy jak chociażby wyświetlenie tekstu "AbcdEFg" jako "abcdefg" (małymi literami).
Cytat
To dlaczego nikt nie rezygnuje z takiej składni szablonów?
Jak to nikt? Pomijam tutaj fakt, że PHP sam w sobie to jeden wielki system szablonów, ale spójrz na Symfony, ZF i inne FW.
Cytat
IMHO obecność języka skryptowego w szablonach doprowadza do tego że nagle pojawia się w nich jakaś logika, co jest złe.
Bzdura. winksmiley.jpg Jak ktoś nie potrafi korzystać z szablonu (nie ma znaczenia czy to Smarty czy czysty PHP) to i tak doporawdzi do jakiegoś Spaghetti Code
Go to the top of the page
+Quote Post
akurczyk
post 21.12.2008, 21:25:38
Post #11





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


@Crozin: Fajne rozwiązanie, spróbuję.
Wrućmy do mojego parsera.
Zrobiłem w nim dwie pętle i niemoge się już w tym kodzie połapać:)
  1. <?php
  2. mysql_connect("----","----","----");
  3. mysql_query("SET NAMES utf8");
  4. mysql_query("SET CHARACTER_SET utf8_unicode_ci");
  5. $szablon = file_get_contents("szablon.html");
  6. preg_match("#{kategorie}(.*?){/kategorie}#si", $szablon, $znalezione);
  7. $zapytanie = mysql_query("SELECT identyfikator,tytul FROM kategorie");
  8. $kategorie = "";
  9. while($rekord = mysql_fetch_array($zapytanie)) {
  10.    $temp = str_replace("{nazwa_kategorii}", $rekord["tytul"], $znalezione[1]);
  11.    preg_match("#{fora}(.*?){/fora}#si", $temp, $znalezione2);
  12.    $zapytanie2 = mysql_query("SELECT identyfikator,tytul,opis FROM fora WHERE kategoria=\"".$rekord["identyfikator"]."\"");
  13.    $fora = "";
  14.    while($rekord2 = mysql_fetch_array($zapytanie2)) {
  15.        $temp2 = str_replace("{identyfikator_forum}", $rekord2["identyfikator"], $znalezione2[1]);
  16.        $temp2 = str_replace("{nazwa_forum}", $rekord2["tytul"], $temp2);
  17.        $fora .= str_replace("{opis_forum}", $rekord2["opis"], $temp2);
  18.    }
  19.    $kategorie .= preg_replace("#{fora}(.*?){/fora}#si", $fora, $temp);
  20. }
  21. $szablon = preg_replace("#{kategorie}(.*?){/kategorie}#si", $kategorie, $szablon);
  22. echo $szablon;
  23. ?>


Szablon:
Kod
<html>
<head>
<title>Newsy</title>
</head>
<body>
{kategorie}
<h2>{nazwa_kategorii}</h2>
{fora}
<h3><a href="forum.php?forum={identyfikator_forum}">{nazwa_forum}</a></h3>
<p>{opis_forum}</p>
{/fora}
{/kategorie}
</body>
</html>


Można to jakoś prościej??


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
Mize
post 21.12.2008, 21:37:18
Post #12





Grupa: Zarejestrowani
Postów: 84
Pomógł: 6
Dołączył: 26.03.2008
Skąd: Łódź

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


Jeślibyś używał czystego PHP w szablonach to byłoby dużo prościej...

Pobranie danych i wyświetlenie szablonu.

  1. <?php
  2. $Result = mysql_query(' ... ');
  3.  
  4. $aData = array();
  5.  
  6. while( $aFetch = mysql_fetch_array($Result) ) {
  7.  
  8.   $aData[] = $aFetch;
  9.  
  10. }
  11.  
  12. /* Wyswietlanie szablonu... */
  13. include('Template.phtml');
  14. ?>


Szablon.

Kod
<?php foreach($aData AS $Data): ?>

Foo: <?php echo $Data['Bar']; ?>

<?php endforeach; ?>


Pisane z palca, ale dużo prościej.
Nie wiem kto teraz pisze własne systemy template ze sładnią z dupy, która wygląda troche inaczej niż czyste PHP, a działa wolniej. SMARTY = crap.

Pozdrawiam.


--------------------
NULL;
Go to the top of the page
+Quote Post
Riklaunim
post 21.12.2008, 22:28:43
Post #13





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

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


Cytat(akurczyk @ 21.12.2008, 23:25:38 ) *
Można to jakoś prościej??

Prościej to nie znaczy czytelniej i łatwiej w rozbudowie winksmiley.jpg Chcesz robić forum? Użyj frameworka (Kohana, CI, inne) i oddziel zapytania od widoku i od szablonu odpowiedzialnego za wygląd - jeżeli chcesz stworzyć coś funkcjonalnego, co można pokazać smile.gif

Cytat
Nie wiem kto teraz pisze własne systemy template ze sładnią z dupy, która wygląda troche inaczej niż czyste PHP, a działa wolniej. SMARTY = crap.


to napisz serwis pokroju nasza klasa, grono, czy też fotka bez szablonów, stosując PHP, a później próbuj to rozbudowywać i poprawiać. Szablony i inne rozwiązania, wzorce projektowe nie są stosowane po to by kod był szybszy (bo będzie nieco wolniejszy niż napisany jednym ciurkiem), ale żeby ten kod dało się utrzymać, modyfikować i rozwijać. I taka mała notka - szablony smarty są kompilowane do kodu PHP (kesz) i przy kolejnych wywołaniach szablonu te gotowe postacie są stosowane niewidzialnie dla programisty/użytkownika.


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
Mize
post 21.12.2008, 22:38:44
Post #14





Grupa: Zarejestrowani
Postów: 84
Pomógł: 6
Dołączył: 26.03.2008
Skąd: Łódź

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


To co wyżej napisałem to był przykład, i chyba nie uważasz, że tak pisze aplikacje? tongue.gif
Tak wyglądaja u mnie template'y i jakoś nie mam problemu z ich przerabianiem.
Wyświetlanie i operowanie na danych to już inna bajka i ten kod wyżej to tylko poglądowy.

Pozdrawiam.


--------------------
NULL;
Go to the top of the page
+Quote Post
l0ud
post 21.12.2008, 22:43:15
Post #15





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Riklaunim, nikt nie miał na myśli całkowitego unikania idei szablonów, a dodatkowych parserów, które robią dodatkowy narzut i wprowadzają swoją składnię.
Podałem swój przykład, jak dość prosto zrobić to bez wyrażeń regularnych i kobył typu smarty. Uzupełniając przykład o instrukcję typu endif; zamiast } imho uzyskamy wystarczająco dobrą czytelność szablonu. Ok, piszesz że szablony są kompilowane do czystego kodu PHP. Ale dlaczego nie mogą być nim od początku?


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
Riklaunim
post 21.12.2008, 23:00:03
Post #16





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

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


Cytat
Ok, piszesz że szablony są kompilowane do czystego kodu PHP. Ale dlaczego nie mogą być nim od początku?

Bo jak np. pisałem firmowego CRMa to osoba odpowiedzialna za interfejs użytkownika nie była programistą server side, a geekiem jQuery/CSS i prace szły bardzo szybko, a CRM wyszedł kompatybilny na poziomie krystyny z gazowni.

Szablony mogą być "od razu" plikami *php, tyle że niekoniecznie musi to być najlepsze rozwiązanie winksmiley.jpg


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
akurczyk
post 21.12.2008, 23:03:59
Post #17





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


Zroiłem tak jak mi radziliście. Fajnie to nawet wygląda, szablon tak bardzo się nie zmienie, a zato skrypt zyskał na czytelności i wydajnmości.
Skrypt:
  1. <?php
  2. mysql_connect("mysql2.yoyo.pl","db723710","zaq1@#$");
  3. mysql_select_db("db723710");
  4. mysql_query("SET NAMES utf8");
  5. mysql_query("SET CHARACTER_SET utf8_unicode_ci");
  6. $zapytanie = mysql_query("SELECT * FROM kategorie ORDER BY tytul");
  7. while($rekord = mysql_fetch_array($zapytanie)) {
  8.    $tablica[] = $rekord;
  9. }
  10. $zapytanie2 = mysql_query("SELECT * FROM fora WHERE kategoria=\"PROBLEM\" ORDER BY tytul");
  11. while($rekord2 = mysql_fetch_array($zapytanie2)) {
  12.    $tablica2[] = $rekord2;
  13. }
  14. include("szablon.php");
  15. ?>


Szablon:
Kod
<html>
<head>
<title>Forum</title>
</head>
<body>
<?php foreach($tablica as $rekord): ?>
<h2><?php echo $rekord["tytul"]; ?></h2>
<?php foreach($tablica2 as $rekord2): ?>
<h3><a href="forum.php?forum=<?php echo $rekord["identyfikator"]; ?>"><?php echo $rekord2["tytul"]; ?></a></h3>
<p><?php echo $rekord2["opis"]; ?></p>
<?php endforeach; ?>
<?php endforeach; ?>
</body>
</html>


Mam problem, więcej w drugim zapytaniu (dziesiąta linijka skryptu). Co mam zrobić?questionmark.gif

Ten post edytował akurczyk 22.12.2008, 10:49:39


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
Crozin
post 21.12.2008, 23:06:11
Post #18





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

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


Cytat
Bo jak np. pisałem firmowego CRMa to osoba odpowiedzialna za interfejs użytkownika nie była programistą server side, a geekiem jQuery/CSS
Czy jeżeli założę, ża taka osoba jest w wystarczającym stopniu inteligenta by zrozumieć, że to co jest pomiędzy <?php, a ?> to coś czego ma nie ruaszć? Zresztą wydaje mi się, że chociaż podsatawy podstaw języka PHP za już wcześniej - a jak nie to w dosłownie 5 min kolega z zespołu wytłumaczy bardzo ogólnikowo co to jest.

Tylko... skoro dla frontend developera <?php ... ?> to coś z czym nie wie co robić to czemu inaczej by miało być z { ... }? Jeszcze w dodatku będzie musiał uważać przy pisaniu jakiegoś CSS, JS wewnątrz dok. HTML.
Go to the top of the page
+Quote Post
akurczyk
post 21.12.2008, 23:18:29
Post #19





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


POMOCY!!


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
erix
post 21.12.2008, 23:31:25
Post #20





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Mam problem, więcej w drugim zapytaniu (dziesiąta linijka skryptu). Co mam zrobić?

A może byłbyś łaskaw podać treść błędu, a nie się drzeć?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Wersja Lo-Fi Aktualny czas: 28.04.2024 - 14:44