<?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>MWL Blog &#187; Webdevelopment</title>
	<atom:link href="http://lenkowski.net/index.php/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://lenkowski.net</link>
	<description>Lenkowski Personal Website</description>
	<lastBuildDate>Wed, 14 Dec 2011 11:15:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Kilka słów o Zend Framework</title>
		<link>http://lenkowski.net/index.php/2011/04/11/kilka-slow-o-zend-framework/</link>
		<comments>http://lenkowski.net/index.php/2011/04/11/kilka-slow-o-zend-framework/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 11:30:02 +0000</pubDate>
		<dc:creator>MWL</dc:creator>
				<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[programowanie]]></category>

		<guid isPermaLink="false">http://lenkowski.net/?p=963</guid>
		<description><![CDATA[Koledzy, nie programiści, powiedzą od razu: &#8222;ech, kolejny artykuł z serii Lenkoś no-life&#8221;, dlatego w dzisiejszym tekście nie napiszę choćby jednej linijki kodu źródłowego. Jeśli chcesz zacząć zabawę z Zendem polecam stronę z serii ciężki umysł Ciekawa nazwa, ale jakość artykułów jest znacznie ciekawsza, naprawdę polecam. Co do samego Zenda, bardzo mi się podoba. Spodziewałem [...]]]></description>
			<content:encoded><![CDATA[<p>Koledzy, nie programiści, powiedzą od razu: &#8222;ech, kolejny artykuł z serii Lenkoś no-life&#8221;, dlatego w dzisiejszym tekście nie napiszę choćby jednej linijki kodu źródłowego. Jeśli chcesz zacząć zabawę z Zendem polecam stronę z serii ciężki umysł <img src='http://lenkowski.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Ciekawa nazwa, ale <a href="http://www.heavymind.net/zend-framework-tutorial/">jakość artykułów jest znacznie ciekawsza</a>, naprawdę polecam.</p>
<p>Co do samego Zenda, bardzo mi się podoba. Spodziewałem się gotowego systemu, ze ściśle ustalonymi katalogami, a tu, proszę, można zrobić to dowolnie jak się chce. Wystarczy napisać plik bootstrappera, podać tam ścieżki, wywołać dispatchera i po sprawie. Większość zadań jakie miałbym jeszcze do napisania w moim frameworku jest już dawno gotowa. ORM jest banalnie łatwy w obsłudze i choć nie jest lekkim narzędziem, korzystanie z czystego MySql&#8217;a też jest przyjemne. Wydaje mi się że całkowita przesiadka na Zenda będzie bardzo sensowna.</p>
<p>Licząc zalety gotowego frameworka nie można zapominać o czasie tworzenia strony. Przeciętny system dodawania i edycji danych może zająć na moim obecnym narzędziu około godziny, podczas gdy na Zend, większość rzeczy robiona jest automatycznie i zajmuje około 30 minut. Bardzo mi się to podoba.</p>
<p>Zend ma też dość ciekawie rozbudowaną filozofię, możesz dodać bardzo, bardzo dużo różnych bibliotek i po prostu ich używać, nawet bez obowiązku ładowania, bo tym zajmie się autoloader. Nad Zendem, poza samym Zendem, czyli, jeśli można tak powiedzieć właścicielem PHP, pracują Microsoft, Google i masa innych firm, dostarczających ciekawe API, a ty &#8211; nie musisz zupełnie nic robić. Zatem, na ten przykład podłączenie do strony facebooka jest banalnie proste. Całkiem przyjemne, prawda <img src='http://lenkowski.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: center;"><img class="size-full wp-image-964 aligncenter" title="Zrzut ekranu 2011-04-11 (godz. 13.26.00)" src="http://lenkowski.net/wp-content/uploads/2011/04/Zrzut-ekranu-2011-04-11-godz.-13.26.00.gif" alt="" width="599" height="133" /></p>
<div class="shr-publisher-963"></div>]]></content:encoded>
			<wfw:commentRss>http://lenkowski.net/index.php/2011/04/11/kilka-slow-o-zend-framework/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Tworzenie pluginów do wordpress&#8217;a od podstaw</title>
		<link>http://lenkowski.net/index.php/2010/08/15/tworzenie-pluginow-do-wordpressa-od-podstaw/</link>
		<comments>http://lenkowski.net/index.php/2010/08/15/tworzenie-pluginow-do-wordpressa-od-podstaw/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 12:24:45 +0000</pubDate>
		<dc:creator>MWL</dc:creator>
				<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[programowanie]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://lenkowski.net/?p=721</guid>
		<description><![CDATA[Ostatnio miałem ciekawe zlecenie, miałem za zadanie napisać agregator newsów, oparty na stronach wordpress&#8217;a tworzonych w opcji multisite. Postanowiłem więc zabrać się za napisanie do tego celu małego pluginu. I choć szczerze mówiąc słowo plugin nigdy jakoś na mnie dobrze nie działało, to zabawa we &#8222;wtyczkowanie&#8221; wordpressa była naprawdę przyjemna. Pisanie samego pluginu jest dość [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio miałem ciekawe zlecenie, miałem za zadanie napisać agregator newsów, oparty na stronach wordpress&#8217;a tworzonych w opcji multisite. Postanowiłem więc zabrać się za napisanie do tego celu małego pluginu. I choć szczerze mówiąc słowo plugin nigdy jakoś na mnie dobrze nie działało, to zabawa we &#8222;wtyczkowanie&#8221; wordpressa była naprawdę przyjemna.</p>
<p>Pisanie samego pluginu jest dość proste, wystarczy do tego celu znać PHP&#8217;a i mieć opanowane <a href="http://http://lenkowski.net/index.php/2010/08/15/tworzenie-pluginow-do-wordpressa-od-podstaw">podstawowe zasady tworzenia plugnów</a>. Zacznijmy od ustawień. Wszystkie pluginy jakich używamy powinny się znajdować w katalogu wp-content/plugins. W zależności od tego jak bardzo złożony będzie nasz program możemy stworzyć katalog i nazwać tak samo plik znajdujący się w nim, który będzie dla nas czymś w rodzaju dispatchera, lub po prostu stworzyć plik php w którym będzie nasz kod.</p>
<p>W zależności od tego jakiej opcji użyliśmy w pliku startowym kilka pierwszych linijek powinno wyglądać w ten sposób:</p>
<pre>&lt;?php
/**
* @package Nazwa paczki
* @version 0.1
*/
/*
Plugin Name: Nazwa pluginu
Description: Opis, czyli czym twój plugin będzie się zajmował
Author: Twoje Imię i Nazwisko
Version: 0.1
*/
?&gt;</pre>
<p>Kodu tłumaczyć chyba nie trzeba, nazwa paczki, opis, twoje imię i nazwisko no i wersja pluginu to wszystko czego potrzebujemy. Więcej informacji na ten temat można znaleźć w <a href="http://codex.wordpress.org/File_Header">opisie z dokumentacji wordpress</a>. Od tej pory plugin (jeśli znajduje się w katalogu wordpressa) powinien być widoczny we wtyczkach. Wszystko bardzo fajnie tylko&#8230; No właśnie, tak naprawdę nasz plugin nic jeszcze nie robi <img src='http://lenkowski.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Działanie pluginu polega na wywoływaniu funkcji naszego kodu w wywołanych przez Ciebie miejscach. I tak, żeby zadeklarować jakieś działanie, <a href="http://codex.wordpress.org/Function_Reference/add_action">musimy użyć za każdym razem funkcji add_action</a>. Pisząc na końcu w naszym kodzie np. add_action(&#8216;loop_end&#8217;, &#8216;nazwa_naszej_funkcji&#8217;); wywołamy zaraz po akcji loop_end (czyli pod koniec wypisywania treści postów / strony) funkcję o nazwie nazwa_naszej_funkcji. Wszystko jak widać jest dość proste i wystarczą tak naprawdę podstawy PHP by napisać prosty plugin. Wszystkie akcje jakie możemy wywołać, a jest ich dość sporo, znajdziemy w <a href="http://codex.wordpress.org/Plugin_API/Action_Reference">dokumentacji</a>.</p>
<p>Nie należy też zapominać o bazie danych. W wordpress za bazę danych odpowiada zmienna globalna <a href="http://codex.wordpress.org/Function_Reference/wpdb_Class">$wpdb,</a> którą w każdej funkcji wystarczy wywołać za pomocą global $wpdb; Nie mam jednak zamiaru rozpisywać się na ten temat za dużo, bo całość została pięknie opisana w dokumentacji do której odsyłam was po raz setny, a to dlatego że nie tylko są to oficjalne informacje, ale też dlatego że <a href="http://codex.wordpress.org/">wordpress codex</a> jest pisany bardzo prostym i przejrzystym językiem, pomimo że angielskim.</p>
<p>Życzę wszystkim szybkiego, lekkiego i przyjemnego pisania waszych własnych pluginów. To naprawdę proste <img src='http://lenkowski.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><span id="more-721"></span></p>
<p>Jako że NNplaya zawsze był przekonujący postanowiłem nieco rozszerzyć ten artykuł. Chcecie napisać plugin do wordpress&#8217;a? No to zaczynamy <img src='http://lenkowski.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Na początek przygotujmy sobie worpdpressa. Najnowszą wersję można  pobrać na wordpress.org, niedawno wyszła wersja 3 więc warto się z nią  zapoznać.</p>
<p>Nasz plugin do wordpress&#8217;a będzie wyświetlał w stopce, dokładną datę w  unix. Niby nic takiego, ale zależy nam na tym żeby można było zrobić  coś na szybko, by zabrać się do pracy z własnym pluginem.</p>
<p>Jak mówiłem w poprzednim poście, aby zacząć należy utworzyć  odpowiednie komentarze na górze. Myślę że każdy to rozumie, dlatego od  razu robimy krok do przodu. Trzaba sprawdzić jaka akcja wyświetli nam  funkcję w stopce. Jak widać po <a href="http://codex.wordpress.org/Plugin_API/Action_Reference">dokumentacji</a> będzie to add_action(&#8216;wp_footer&#8217;, &#8216;wp_footer_plugn&#8217;);</p>
<p>Teraz wystarczy stworzyć funkcję:</p>
<pre>function wp_footer_plugn()
{
 echo time();
}</pre>
<p>A w naszym wordpressie wyświetli się czas unixowy. To tyle. Proste i szybkie <img src='http://lenkowski.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2><a href="http://lenkowski.net/wp-content/uploads/2010/08/Pluginy-Wordpress-Software-Developers-Journal.pdf">Pluginy WordPress &#8211; Mój artykuł dla Software Developers Journal</a></h2>
<div class="shr-publisher-721"></div>]]></content:encoded>
			<wfw:commentRss>http://lenkowski.net/index.php/2010/08/15/tworzenie-pluginow-do-wordpressa-od-podstaw/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Labolatorium Przeglądarek</title>
		<link>http://lenkowski.net/index.php/2009/09/19/labolatorium-przegladarek/</link>
		<comments>http://lenkowski.net/index.php/2009/09/19/labolatorium-przegladarek/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 19:20:32 +0000</pubDate>
		<dc:creator>MWL</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Projekty]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[programowanie]]></category>

		<guid isPermaLink="false">http://lenkowski.creaweb.pl/?p=335</guid>
		<description><![CDATA[Bardzo dużo webdeveloperów siedzi na systemie Windows tylko i wyłącznie z powodu IE6. Tak, przeglądarka robiąca duże problemy. Adobe spisało się i zaprezentowało perfekcyjne rozwiązanie, które szczególnie przydać się może developerom pracującym na Linuxach i Mac&#8217;ach. Na oba systemy Internet Explorer 6 jest dużym problemem. Browseshot, czyli screenschot z różnych przeglądarek było jednym z niewielu [...]]]></description>
			<content:encoded><![CDATA[<p>Bardzo dużo webdeveloperów siedzi na systemie Windows tylko i wyłącznie z powodu IE6. Tak, przeglądarka robiąca duże problemy. Adobe spisało się i zaprezentowało perfekcyjne rozwiązanie, które szczególnie przydać się może developerom pracującym na Linuxach i Mac&#8217;ach. Na oba systemy Internet Explorer 6 jest dużym problemem. Browseshot, czyli screenschot z różnych przeglądarek było jednym z niewielu rozwiązań, sprawdzających czy strona na pewno działa pod IE. Dziś Adobe prezentuje lepsze rozwiązanie &#8211; <a href="http://browserlab.adobe.com">http://browserlab.adobe.com</a> w o wiele szybszym czasie tworzy screenshoty wielu przeglądarek. Jedyne czego potrzebujesz to Adobe ID. Niebawem przygotuję recenzję tego programu, teraz idę dokładniej testować to, wyglądające na perfekcyjne, narzędzie.</p>
<div class="shr-publisher-335"></div>]]></content:encoded>
			<wfw:commentRss>http://lenkowski.net/index.php/2009/09/19/labolatorium-przegladarek/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>O MVC</title>
		<link>http://lenkowski.net/index.php/2009/07/13/mvc/</link>
		<comments>http://lenkowski.net/index.php/2009/07/13/mvc/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 13:29:34 +0000</pubDate>
		<dc:creator>MWL</dc:creator>
				<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[programowanie]]></category>

		<guid isPermaLink="false">http://lenkowski.creaweb.pl/?p=305</guid>
		<description><![CDATA[MVC dla początkujących. Tak, tak jest już bardzo dużo artykułów o tym jak działa model, widok i kontroler. Mimo to żaden z nich nie został dobrze zinterpretowany przeze mnie, i dopiero videocasty z zend framework uświadomiły mi jak to wszystko powinno wyglądać. Tak więc postanowiłem napisać własny, prosty i zrozumiały tutorial. A więc zaczynamy. MVC, [...]]]></description>
			<content:encoded><![CDATA[<p>MVC dla początkujących.</p>
<p>Tak, tak jest już bardzo dużo artykułów o tym jak działa model, widok i kontroler. Mimo to żaden z nich nie został dobrze zinterpretowany przeze mnie, i dopiero videocasty z zend framework uświadomiły mi jak to wszystko powinno wyglądać. Tak więc postanowiłem napisać własny, prosty i zrozumiały tutorial. A więc zaczynamy.</p>
<p><span id="more-305"></span></p>
<p>MVC, już zapewne słyszałeś o tym skrócie, oznacza on &#8222;Model View Controller&#8221; czyli nazwy warstw aplikacji.</p>
<p>Zakładamy że chcemy zrobić aplikację internetową, która będzie służyła do celów szpiegowania ludzi z naszego miasta. Tematyka nie typowa, ale może zainteresować. Podstawową funkcjonalnością naszej aplikacji będzie dodawanie danych na temat ludzi. Jak się teraz do tego zabrać? Najlepszym sposobem było by zaprojektowanie jakiegoś systemu który wywoływał by odpowiednie akcje (w naszym przypadku będzie to tylko dodawanie i wyszukiwanie ludzi). I tu najlepiej sprawdza się Model Widok i Kontroler, czyli filozofia separacji wywoływania zadań, pobierania danych i rysowania interfejsu.</p>
<p>Wytłumaczę na czym polega MVC w teorii.<br />
Model &#8211; coś co zwraca nam potrzebne dane i zajmuje się ich wysyłaniem i obróbką. I tak na przykład użyjemy modelu by wyszukać jakieś dane, czy dodać je do źródła danych.<br />
Widok (View &#8211; V) &#8211; coś co rysuje nam interfejs, w naszym przypadku stronę.<br />
Kontroler (Controller &#8211; C) &#8211; czyli to co zajmować się będzie tym by aplikacja działała jak trzeba.</p>
<p>Na początek stwórzmy plik index.php o takiej treści</p>
<p>&lt;?php<br />
// definujemy podstawową konfigurację<br />
if(isset($_GET['module'])) $module = strtolower($_GET['module']).&#8217;Controller&#8217;;<br />
else $module = &#8216;indexController&#8217;;</p>
<p>if(isset($_GET['action'])) $action = strtolower($_GET['action']).&#8217;Action&#8217;;<br />
else $action = &#8216;defaultAction&#8217;;</p>
<p>if(!@include_once(&#8216;classes/controllers/&#8217;.$module.&#8217;.php&#8217;))<br />
{<br />
// tutaj możesz zamieścić coś na wypadek nie odnalezienia strony<br />
die(&#8216;Nie odnaleziono strony.&#8217;);<br />
}</p>
<p>$controller = new $module;<br />
if(method_exists($controller, $action)) $controller -&gt; $action();<br />
else die(&#8216;Nie odnaleziono strony.&#8217;);</p>
<p>?&gt;</p>
<p>Mamy przygotowany plik, teraz czas na katalog z klasami. Utwórzmy sobie katalog classes a w nim podkatalogi controllers, models oraz views. W pierwszym z nich zamieszczać będziemy kontrolery które będą pobierały dane z modelu, formowały je odpowiednio i rysowały za pomocą widoków. Jeśli zinterpretujemy kod zrozumiemy że jego zadaniem jest po pierwsze załadowanie odpowiedniej klasy, a po drugie uruchomienie odpowiedniej funkcji (inaczej metody) z instancji naszej klasy jeśli oczywiście ona istnieje.</p>
<p>Zajmijmy się napisaniem naszego pierwszego kontrolera. Nazwijmy go indexController.php i zapiszmy w nim kod naszej nowej klasy. Będzie ona miała za zadanie narysować nagłówek strony, część główną i stopkę strony, oraz wywołanie takich metod z modelu których wymagać będzie nasza aplikacja. Zapiszemy więc taki kod:</p>
<p>&lt;?php<br />
// Tworzymy klasę kontrollera<br />
class indexController<br />
{</p>
<p>public function defaultAction()<br />
{<br />
include(&#8216;classes/views/header.php&#8217;);</p>
<p>echo &#8216;&lt;h1&gt;Witamy w szpegMachina 1.0&lt;/h1&gt;&#8217;;<br />
echo &#8216;<br />
&lt;form action=&#8221;?action=search&#8221; method=&#8221;get&#8221;&gt;<br />
&lt;input type=&#8221;text&#8221; name=&#8221;name&#8221; /&gt;&lt;br /&gt;<br />
&lt;button type=&#8221;submit&#8221;&gt;Szukaj&lt;/button&gt;<br />
&lt;/form&gt;&#8217;;</p>
<p>include(&#8216;classes/views/footer.php&#8217;);<br />
}</p>
<p>}<br />
?&gt;</p>
<p>Napisaliśmy nasz pierwszy kontroler. Ale czy na pewno poprawnie? NIE! Zadaniem kontrolera nie jest wypisywanie danych za pomocą echo tylko łączenie potrzebnych modeli z widokami, nie tak dokładnie, bo przecież wybiera on odpowiednie zadania i sprawdza czasem kilka rzeczy, aczkolwiek nie powinniśmy generować jako tako treści przez controller a realizować to za pomocą widoku. Nasz kod powinien więc wyglądać raczej tak:</p>
<p>&lt;?php<br />
// Tworzymy klasę kontrollera<br />
class indexController<br />
{</p>
<p>public function defaultAction()<br />
{<br />
include(&#8216;classes/views/header.php&#8217;);</p>
<p>include(&#8216;classes/views/index/default.php&#8217;);</p>
<p>include(&#8216;classes/views/footer.php&#8217;);<br />
}</p>
<p>}<br />
?&gt;</p>
<p>Można sobie pomyśleć że nie ma to żadnego znaczenia, jednakże łatwo tu zauważyć po co nam w ogóle potrzebny MVC. Jeśli będziemy w jakikolwiek sposób chcieli zmodyfikować wygląd nie będziemy musieli babrać się w kontrolerze, a tym samym obawiać się że coś spieprzymy. Gotowe nasz pierwszy kontroler został zapisany, a w nim pierwsza jego akcja. Nie użyliśmy w nim modelu, jednak zrobiłem to celowo. Należy zapamiętać że model nie jest niezbędny do kontrolera, używa się go dopiero kiedy potrzebujemy zapisać czy pobrać jakieś dane. Dodamy teraz do naszego kodu metodę addAction, którą będziemy mogli uruchomić za pomocą odwołania get (?action=add).</p>
<p>&lt;?php<br />
&#8230;<br />
public function addAction()<br />
{<br />
// klasycznie dodajemy nagłówek i stopkę<br />
include(&#8216;classes/views/header.php&#8217;);</p>
<p>// jeśli wysłano dane będziemy je dodawać</p>
<p>if(!empty($_POST))<br />
{<br />
// sprawdzamy czy wszystkie dane są wprowadzone<br />
if(!isset($_POST['name']) || !isset($_POST['desc']))<br />
{<br />
// jeśli jest nie tak jak trzeba wypiszemy informację o błędzie<br />
include(&#8216;classes/views/index/error.php&#8217;);<br />
}<br />
else<br />
{<br />
// jest ok więc teraz czas na model<br />
include(&#8216;classes/models/spyModel.php&#8217;);</p>
<p>// mamy już potrzebną nam klasę modelu, teraz instancja<br />
$model = new spyModel();<br />
$model -&gt; add($_POST['name'], $_POST['desc']);<br />
}<br />
}</p>
<p>include(&#8216;classes/views/footer.php&#8217;);<br />
}<br />
&#8230;<br />
?&gt;</p>
<p>No i mamy gotowy kontroler z użytym modelem jeśli jest potrzebny. Czas więc zapisać model, którego użyliśmy.</p>
<p>&lt;?php<br />
class spyModel<br />
{</p>
<p>public function add($name, $desc)<br />
{<br />
// na początek połączymy się z bazą danych<br />
$connect = mysql_connect(&#8216;localhost&#8217;, &#8216;root&#8217;, &#8216;pass&#8217;);</p>
<p>// nie możemy zaomnieć o filtrowaniu danych<br />
$name = mysql_real_escape_string($name);<br />
$desc = mysql_real_escape_string($desc);</p>
<p>// teraz odpowiednie zapytanie<br />
mysql_query(&#8216;&#8230;&#8217;);</p>
<p>// jeśli wystąpił błąd zwrcamy fałsz<br />
if(@mysql_error()) return FALSE<br />
else return TRUE;<br />
}</p>
<p>}<br />
?&gt;</p>
<p>Zrobione. Teraz możemy odwołać się do tego modelu i użyć go w odpowiedniej sytuacji.</p>
<p>Tak właśnie działa MVC. Mamy podział i w dowolnym momencie możemy pozmieniać logikę aplikacji nie psując przy tym innych modułów. Dzięki temu możemy łatwo zarządzać naszą aplikacją. Zastosowany przeze mnie Model Widok Kontroler to najprostsze możliwe rozwiązanie tego wzorca projektowego. Do swoich rozwiązań można oczywiście dodać o wiele bardziej skomplikowane mechanizmy, udostępnić rodziców klasą, tak żeby zbierały różnorakie informacje itd.</p>
<p>Mam nadzieję że mój artykuł był prosty i zrozumiały, a także to że nie będziesz miał już więcej problemów ze zrozumieniem wzorca.</p>
<div class="shr-publisher-305"></div>]]></content:encoded>
			<wfw:commentRss>http://lenkowski.net/index.php/2009/07/13/mvc/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Eclipse PDT na 7</title>
		<link>http://lenkowski.net/index.php/2008/12/14/eclipse-pdt-na-7/</link>
		<comments>http://lenkowski.net/index.php/2008/12/14/eclipse-pdt-na-7/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 13:53:01 +0000</pubDate>
		<dc:creator>MWL</dc:creator>
				<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[programowanie]]></category>

		<guid isPermaLink="false">http://lenkowski.creafuture.h2.pl/?p=185</guid>
		<description><![CDATA[Nie tak dawno zrezygnowałem ze złego komercyjnego i źle działającego (tak, nienawidzę go i być może przesadzam) systemu operacyjnego jakim był Windows. Obecnie systemem na którym działam jest Linux ubuntu, ostatnio niestety było z nim kilka problemów dlatego tez postanowiłem zmienić wersję na nowszą. Mój obecny system (ubuntu 8.10) sprawuje się świetnie i wszystko co [...]]]></description>
			<content:encoded><![CDATA[<p>Nie tak dawno zrezygnowałem ze złego komercyjnego i źle działającego (tak, nienawidzę go i być może przesadzam) systemu operacyjnego jakim był Windows. Obecnie systemem na którym działam jest Linux ubuntu, ostatnio niestety było z nim kilka problemów dlatego tez postanowiłem zmienić wersję na nowszą. Mój obecny system (ubuntu 8.10) sprawuje się świetnie i wszystko co chcę działa jak należy. Wczoraj zainstalowałem Eclipse php developer tools (PDT) i jestem zachwycony jego działaniem. Po przesiadce na liunucha korzystałem z marnego, choć wcale nie złego, bo to co było potrzebne się w nim znajduje gEdita. Oczywiście wiadomo że na programach takich jak gEdit czy notepad++ pracuje się znacznie gorzej niż na zintegrowanym środowisku programistycznym. Pamiętam jeszcze z windy bardzo znany program którego używałem (dreamweaver). Bardzo dobry, wręcz świetny bym powiedział program, warty nawet tak wysokiej ceny. Ale po tym co dziś zobaczyłem w Eclipse moje zdanie zmienia się diametralnie. Oprócz podświetlania składni, podpowiadania kodu i innych ważnych pierdów ma on bardzo ładnie zrobione zarządzanie projektem. Teraz o wiele prościej coś dodać, usunąć czy zmienić. Kolejną rzeczą której się dopatrzyłem to lista rzeczy do zrobienia (TODO). Jest to świetna rzecz która pomaga w nadrabianiu braków. Dodatkowo Eclipse PDT czyta także poprawnie komentarza dokumentacji i dokładnie wie o co chodzi. Jeśli ktoś ma więc zamiar wydać masę pieniędzy na dreamweavera, uprzedzam warto się bliżej przyjrzeć eclipse, równie dobremu, a być może nawet lepszemu środowisku które w dodatku jest zupełnie bezpłatne.</p>
<div class="shr-publisher-185"></div>]]></content:encoded>
			<wfw:commentRss>http://lenkowski.net/index.php/2008/12/14/eclipse-pdt-na-7/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

