<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>cojack blog &#187; php a html</title>
	<atom:link href="http://www.cojack.pl/tag/php-a-html/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cojack.pl</link>
	<description>Programowanie oraz Open Source powodem do życia</description>
	<lastBuildDate>Sat, 26 Nov 2011 18:43:28 +0000</lastBuildDate>
	<language>PL</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>System szablonów ITX</title>
		<link>http://www.cojack.pl/system-szablonow-itx</link>
		<comments>http://www.cojack.pl/system-szablonow-itx#comments</comments>
		<pubDate>Sun, 28 Jun 2009 17:43:07 +0000</pubDate>
		<dc:creator>cojack</dc:creator>
				<category><![CDATA[IT/ITX]]></category>
		<category><![CDATA[biblioteka pear]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[pear itx]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php a html]]></category>
		<category><![CDATA[skrypty php]]></category>
		<category><![CDATA[System szablonów]]></category>

		<guid isPermaLink="false">http://cojack.os-cms.pl/?p=21</guid>
		<description><![CDATA[Tak więc zacznijmy od tego, że należy sprawdzić naszą bibliotekę PEAR, PEAR jest to zbiór rozszerzeń dla PHP. Można to rozumieć na dwojaki sposób, ale należy w taki że jest to repozytorium (zbiór, miejsce) gotowych skryptów (klas) opublikowanych na licencji GPL lub pochodnych. A teraz do rzeczy w konsoli wykonujemy ...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Pear" src="http://cojack.os-cms.pl/wp-content/pear.png" alt="" height="100" width="100">Tak więc zacznijmy od tego, że należy sprawdzić naszą bibliotekę PEAR, PEAR jest to zbiór rozszerzeń dla PHP. Można to rozumieć na dwojaki sposób, ale należy w taki że jest to repozytorium (zbiór, miejsce) gotowych skryptów (klas) opublikowanych na licencji GPL lub pochodnych. A teraz do rzeczy w konsoli wykonujemy polecenie</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;">pear list</pre></div></div>

<p>To polecenie powinno nam zwrócić mniej więcej taki wynik:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="powershell" style="font-family:monospace;">Installed packages<span style="color: pink;">,</span> channel pear.php.net:
<span style="color: pink;">=========================================</span>
Package             Version State
Archive_Tar         1.3.3   stable
Console_Getopt      1.2.3   stable
HTML_Common         1.2.5   stable
HTML_QuickForm      3.2.11  stable
HTML_Template_Flexy 1.3.9   stable
HTML_Template_IT    1.2.1   stable
PEAR                1.8.1   stable
Structures_Graph    1.0.2   stable
XML_Util            1.2.1   stable</pre></td></tr></table></div>

<p>Oczywiście nie powinniście mieć HTML_Template_IT, ale jeżeli macie, pomińcie dalszą część instalacji.</p>
<p><strong>Instalacja</strong><br />
Żeby zainstalować pakiet z biblioteki PEAR, należy uzyskać prawa administratora, ja używam archlinuxa, przez co u mnie uzyskanie praw administratora wykonuje się przez polecenie:</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;">su</pre></div></div>

<p>w zależności od dystrybucji, może to być też również</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;">sudo su</pre></div></div>

<p>Po wpisaniu hasła, wydajemy polecenie:</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;">pear update<span style="color: pink;">-</span>channels</pre></div></div>

<p>być może będzie trzeba zrobić coś innego, ale czytajcie logi z konsoli, i na pewno przejdziecie ten etap. Następnie wpisujemy:</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;">pear install HTML_Template_IT</pre></div></div>

<p>I teraz plus dla Linuxa, linux sam sobie rozwiąże zależności wśród pakietów, co załatwia za nas instalowanie dodatkowych pakietów które musielibyśmy sami rozwiązać (czytaj ściąganie ręcznie z strony pear.php.net reszty paczek). Dobra mamy już to czego nam potrzeba, czyli system szablonów ITX. Dobrym też rozwiązaniem jest upgrejd pozostałych pakietów, jeżeli mamy jakieś stare, możemy to łatwo i szybko rozwiązać wpisując polecenie:</p>

<div class="wp_syntax"><div class="code"><pre class="powershell" style="font-family:monospace;">pear upgrade<span style="color: pink;">-</span>all</pre></div></div>

<p>Teraz możemy przejść do części kulminacyjnej, czyli implementacji ITX.</p>
<p><strong>Sposób użycia systemu szablonów ITX</strong><br />
Tworzymy sobie jakiś plik, np index.php, i zaczynamy kodzić nasz pierwszy skrypt z użyciem ITX:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">require_once</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTML/Template/ITX.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># wczytujemy klase bazową
</span><span style="color: #000088;">$tpl</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HTML_Template_ITX<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'./templates'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># do konstruktora podajemy ścieżkę w której znajduje się nas szablon
</span><span style="color: #000088;">$tpl</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">loadTemplatefile</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'index.tpl'</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># wczytujemy nasz plik z templatką
</span><span style="color: #000088;">$tpl</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setCurrentBlock</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'start'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># zaczynamy blok do parsowania
</span><span style="color: #000088;">$tpl</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setVariable</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'imie'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'Andrzej'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># parsujemy zmienna imie na tekst Andrzej
</span><span style="color: #000088;">$tpl</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">parseCurrentBlock</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'start'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># dobrym nawykiem jest dodawanie nazwy bloku
</span><span style="color: #000088;">$tpl</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>Dla totalnie zielonych</strong> (nie chcesz nie czytaj)</p>
<p>Mamy już gotowy plik w którym będziemy parsować plik z templatką, teraz troche wyjaśnień co do metod</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$tpl</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HTML_Template_ITX<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'./templates'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>W tym momencie tworzymy obiekt klasy HTML_Template_ITX i musimy do konstruktora klasy wysłać ścieżkę w której mamy nasze pliki z szablonami, <em>./</em> mówi nam że jest to katalog z którego wykonujemy skrypt, następnie folder templates, w którym mamy nasz plik z szablonem. Nie ma innej możliwości podania klasie lokalizacji folderu z szablonami, więc należy o tym pamiętać.<br />
Następna linijka:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$tpl</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">loadTemplatefile</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'index.tpl'</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Tutaj natomiast podajemy nazwę szablonu którego ma użyć w danym skrypcie, funkcja loadTemplatefile jak widać pobiera 3 argumenty, pierwszy to nazwa templatki jako string, druga natomiast przyjmuje wartości boolean, czyli true lub false, dla <em>true</em> usuwa nieznane zmienne z pliku z szablonem, czyli jak damy jakąś zmienną {KTOS} a nie nadamy jej wartości poprzez setVariable, to parses usunie ją, dla <em>false</em> parses zostawi zmienną i wyświetli się nam w postaci {KTOS}, trzeci argument, też przyjmuje wartości boolean, odpowiada za parsowanie bloków w sensie usuwa lub zostawia bloki, już tłumaczę, dla <em>true</em> parser usunie bloki nie dotknięte przez funkcję setCurrentBlock(), lub touchBlock() lub parse(). Ale do tego wrócimy. Dla <em>false</em> zostawi te bloki,  i je wyświetli (manual o tym nic nie pisze, ale tak jest <img src='http://www.cojack.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Idźmy dalej:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$tpl</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setCurrentBlock</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'start'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Tutaj jak sama nazwa funkcji wskazuje, ustawiamy jaki blok w templatce chcemy parsować, trzeba wziąć pod uwagę, to że wielkość słów nie ma znaczenia, lecz nie mogą się w nazwie bloku znaleźć Polskie znaki diakrytyczne. Później pokaże jak to można zrobić, tak więc czy napiszemy StArT, czy START, czy jakkolwiek inaczej parser nam to ładnie przewinie, dodam że do nazw można dodawać liczby 0-9, _ (podkreślnik), &#8211; (minus) oraz . (kropka).</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$tpl</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setVariable</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'imie'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'Andrzej'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Tutaj natomiast mamy do czynienia z ustawianiem zmiennej <em>imie</em> na string Andrzej, zostanie ona podmieniona a później wyświetlona, należy jednak zapamiętać że nie powinno się stosować takich samych nazw bloków jak i zmiennych, z doświadczenia wiem, że może to nam narobić boruty, i nawet jeżeli mamy 2 bloki, każdy z bloków nazywa się inaczej, to <u>nie wolno stosować takich samych nazw zmiennych</u> w tych blokach! Bardzo ważne i należy się tego trzymać!</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$tpl</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">parseCurrentBlock</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'start'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Tutaj mamy dziwną sprawę, ponieważ funkcja jest nazwana jako void, co jest bardzo dziwne, ponieważ funkcje typu void niczego nie zwracają, a tu i tak funkcja zwraca nam true więc wartość boolean przy poprawnym rezultacie, no i w przeciwnym wypadku FALSE lub IT_Error, sprawdziłem IT_Error.php, dziedziczy z klasy PEAR_Error, w której nie ma wyjątków, więc co jak co try {} catch {} nam nie pomogą. Dostaniemy gołym php&#8217;owym błędem w twarz. Co do podawania nazwy bloku który parsujemy, nie daje on nic, ale daje nam, jeżeli mamy np parę zagnieżdżonych bloków w sobie (np podwójne Menu, potrójne, poczwórne &#8230;), to później nam łatwiej jest się odnaleźć który to już blok zamknęliśmy.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$tpl</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Funkcja ta, może ale nie musi przyjmować wartość typu string, która jest nazwą bloku, czyli parsujemy jakąś templatkę i nie chcemy parsować wszystkiego na raz, tylko pojedyncze bloki bo takie mamy widzimisię, to podajemy jako string nazwę każdego z poszczególnych bloków. Jeżeli natomiast zastosujemy na końcu po implementacji całego szablonu, parser przeleci wszystkie bloki, i je zwróci jako gotowy kod HTML&#8217;a. Btw kolejna funkcja typu void.</p>
<p><strong>Plik szablonu</strong></p>
<p>Przerobiliśmy cały kod z pliku index.php, teraz zostało nam zobaczyć jak wygląda, teraz przyszedł czas na szablon.<br />
Tak więc nazwaliśmy sobie szablon: <u>index.tpl</u>, tak więc w katalogu <u>templates</u> tworzymy sobie ten plik szablonu a w nim następujący kod:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> <span style="color: #000066;">http-equiv</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Content-Type&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/html; charset=UTF-8&quot;</span> &gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>System szablonów ITX<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- BEGIN start --&gt;</span>
Witaj {imie}!
<span style="color: #808080; font-style: italic;">&lt;!-- END start --&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></td></tr></table></div>

<p>Jak już zdążyliście zauważyć bloki zaczyna się komentarzami w HTML&#8217;u, wyraźnie zaznaczamy rozpoczęcie kodu bloku przez słowo <u>BEGIN</u> i zakończenie <u>END</u>, zmienne wstawiamy w znaki klamer <strong>{ }</strong><br />
Teraz to już nam nic nie zostało do zrobienia jak tylko odpalenie skryptu, i zobaczyć jak pięknie działa. W ten oto sposób oddzieliliśmy kod PHP od kodu HTML.</p>
<p>W następnych częściach więcej przykładów oraz opisu funkcji.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cojack.pl/system-szablonow-itx/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

