<?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>Bartek Medoń - blog &#187; PHP</title>
	<atom:link href="http://www.blog.bmedon.net/index.php/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blog.bmedon.net</link>
	<description>Blog Bartka Medonia dotyczący informatyki, ale nie tylko...</description>
	<lastBuildDate>Tue, 20 Jul 2010 18:29:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Generowanie osobnych meta tagów dla każdej strony</title>
		<link>http://www.blog.bmedon.net/index.php/php/generowanie-osobnych-meta-tagow-dla-kazdej-strony/</link>
		<comments>http://www.blog.bmedon.net/index.php/php/generowanie-osobnych-meta-tagow-dla-kazdej-strony/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 20:33:31 +0000</pubDate>
		<dc:creator>Bartek Medoń</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[pozycjonowanie]]></category>
		<category><![CDATA[meta tagi]]></category>
		<category><![CDATA[programowanie obiektowe]]></category>

		<guid isPermaLink="false">http://www.blog.bmedon.net/?p=298</guid>
		<description><![CDATA[Tutaj chciałem przedstawić kilka możliwości generowania meta tagów (tytuł, słowa kluczowe i opis) za pomocą PHP dla stron Internetowych. Można to zrobić na wiele sposobów jednak im zrobimy to lepiej tym łatwiej i szybciej w późniejszym czasie się w tym połapiemy i będziemy mogli modyfikować. Jeśli tworzymy prostą stronę z dosłownie kilkoma pod stronami to [...]]]></description>
			<content:encoded><![CDATA[<p>Tutaj chciałem przedstawić kilka możliwości generowania meta tagów (tytuł, słowa kluczowe i opis) za pomocą PHP dla stron Internetowych. Można to zrobić na wiele sposobów jednak im zrobimy to lepiej tym łatwiej i szybciej w późniejszym czasie się w tym połapiemy i będziemy mogli modyfikować. Jeśli tworzymy prostą stronę z dosłownie kilkoma pod stronami to często nie korzystamy w ogóle z PHP czy innej technologi tworzenia dynamicznych stron tylko każda część serwisu jest powtórzonym plikiem z całą strukturę (nagłówkiem, menu, unikalną zawartością, stopką itd.). Jest to rozwiązanie kiepskie jednak w takich przypadkach (kilku częściowe strony) może się sprawdzić. W pozostałych przypadkach każda część serwisu będzie osobnym plikiem ładowanym i wyświetlanym w określonym miejscu lub będzie on wykorzystany do operacji na danych, a jeszcze inny plik (widok) te dane wyświetli &#8211; możliwości napisania ogólnej architektury jest wiele. Przejdźmy więc do interesującego nas tematu.<span id="more-298"></span></p>
<h1 class='w_tresci'>Najprostsze rozwiązanie</h1>
<p>Można by było po prostu do naszego pliku głównego, który ma tam jakiś swój mechanizm ładowania pod stron wkleić między interesujące nas tagi prosty kod, np. między tag TITLE :</p>
<pre name="code" class="php">
if (isset($_GET[strona]))
{
  switch ($_GET[strona])
  {
    case "kontakt":
      echo "Formularz kontaktowy";
    break;
    case "grafiki":
      echo "Zbiór wykonanych grafik";
    break;
    default:
      echo "Taka strona nie istnieje";
    break;
  }
}
else
{
  echo "Strona główna bla bla bla";
}
</pre>
<p>Taki sam kod wkleilibyśmy również między tagi KEYWORDS i DESCRIPTION jednak zauważ dwie największe wady :</p>
<ul>
<li>robi się straszny śmietnik w naszym pliku głównym</li>
<li>praktycznie ten sam kod jest powtarzany 3 krotnie co jest niezłym marnotrawstwem</li>
</ul>
<h1 class='w_tresci'>Programowanie strukturalne &#8211; funkcje</h1>
<p>Ok stwierdziliśmy, że pierwszy sposób jest nie do przyjęcia więc postanowiliśmy, że napiszmy osobne funkcje do generowania treści meta tagów, np. dla znacznika TITLE :</p>
<pre name="code" class="php">
function generujTytul()
{
  if (isset($_GET[strona]))
  {
    switch ($_GET[strona])
    {
      case "kontakt":
        return "Formularz kontaktowy";
      break;
      case "grafiki":
        return "Zbiór wykonanych grafik";
      break;
      default:
        header("Location: index.php");
      break;
    }
  }
  else
  {
    return "Strona główna bla bla bla";
  }
}
</pre>
<p>Dla pozostałych znaczników tworzymy podobne funkcje, zapisujemy sobie wszystkie 3 w osobnym pliku, ładujemy instrukcją require_once i wyświetlamy w odpowiednim miejscu (zamiast return można dać instrukcje echo, ja akurat zrobiłem tak mając na uwadze chęć przypisania wartości zwracane do zmiennych). No ale generalnie co nam to dało ?</p>
<ul>
<li>w pliku głównym nie ma już takiego &#8222;syfu&#8221;</li>
<li>niestety nadal praktycznie ten sam kod jest powtarzany 3 krotnie</li>
</ul>
<p>W takim razie zmodyfikujemy trochę nasze podejście i zrobimy zamiast trzech funkcji jedną :</p>
<pre name="code" class="php">
function generujMetaTagi()
{
  if (isset($_GET[strona]))
  {
    switch ($_GET[strona])
    {
      case "kontakt":
        $t[0] = "Tytuł strony";
        $t[1] = "Opis strony";
        $t[2] = "Słowa kluczowe";
      break;
      default:
        header("Location: index.php");
      break;
    }
  }
  else
  {
    $t[0] = "Tytuł strony głównej";
    $t[1] = "Opis strony głównej";
    $t[2] = "Słowa kluczowe strony głównej";
  }
  return $t;
}
</pre>
<p>Pozwoliło nam to na nie powtarzanie kodu, dalej możemy użyć naszej funkcji w następujący sposób :</p>
<pre name="code" class="php">
$meta = generujMetaTagi(); // wywołanie
// i np. w tagu TITLE
echo $meta[0];
</pre>
<p>Otrzymane rozwiązanie jest całkiem dobre, nie mniej mając na względzie dalsze modyfikacje i zmiany w naszym systemie, stronie WWW warto przejść na</p>
<h1 class='w_tresci'>Programowanie obiektowe</h1>
<p>Możemy więc napisać sobie osobną klasę związaną z meta tagami, przykładowo :</p>
<pre name="code" class="php">
class MetaTagi
{
  public $tytul;
  public $opis;
  public $slowa_kluczowe;
  public function __construct()
  {
    if (isset($_GET[strona]))
    {
      switch ($_GET[strona])
      {
        case "kontakt":
          $this->tytul = "Formularz kontaktowy";
          $this->opis = "Tutaj możesz odnaleźć możliwości kontaktu ze mną";
          $this->slowa_kluczowe = "kontakt, e-mail, gadu-gadu, skype, imie nazwisko";
        break;
        case "grafiki":
          $this->tytul = "Zbiór wykonanych grafik";
          $this->opis = "Tutaj możesz obejrzeć moje prace graficzne";
          $this->slowa_kluczowe = "grafika, portfolio, wykonane prace, imie nazwisko";
        break;
        default:
          header("Location: index.php");
        break;
      }
    }
    else
    {
          $this->tytul = "Strona głowna bla bla bla";
          $this->opis = "Moja strona domowa.....";
          $this->slowa_kluczowe = "słowa kluczowe....";
    }
  }
}
</pre>
<p>następnie gdzieś na początku naszego pliku głównego tworzymy sobie obiekt naszej klasy czyli :</p>
<pre name="code" class="php">
$tagi = new MetaTagi();
</pre>
<p>oraz w danym znaczniku wyświetlam np. dla TITLE :</p>
<pre name="code" class="php">
echo $tagi->tytul;
</pre>
<p>Jak widać w konstruktorze są ustalane podczas ładowania strony wszelkie potrzebne dane jednak można to zrobić w osobnej funkcji itd. Tak samo zmienne, które są publiczne możemy ustawić jako prywatne i do wyświetlania zawartości wybranego tagu używać dodatkowych metod. Opcji jest wiele &#8211; do wyboru, do koloru.</p>
<h1 class='w_tresci'>Inne rozwiązanie obiektowe</h1>
<p>Pokazując kiedyś komuś podobne rozwiązanie jak powyższe zapytał co np. kiedy ma napisany pewien wzorzec, architekturę na podobieństwo np <a href="http://pl.wikipedia.org/wiki/MVC" title="Model Widok Kontroler" target="_blank">MVC</a> ? Tutaj generalnie uważam, że warto przyglądnąć się rozwiązaniem jakie stosowane są w różnych <a href="http://pl.wikipedia.org/wiki/Framework" title="Co to jest Framework" target="_blank">framework&#8217;ach</a> jednak jeśli bardzo chcemy się uprzeć na własny pomysł to bardzo prostym rozwiązaniem jest np. stworzenie takiej klasy ze zmiennymi statycznymi (to tylko przykładowa koncepcja, można korzystać ze zwykłych zmiennych wewnątrz niej) :</p>
<pre name="code" class="php">
class Meta
{
	public static $title;
	public static $keywords;
	public static $description;
}
</pre>
<p>W naszej stworzonej architekturze mamy osobne pliki &#8211; modele związane z warstwą danych więc przykładowo możemy w każdym takim pliku umieścić kod odpowiadający za ustalenie dla danej strony zawartości znaczników :</p>
<pre name="code" class="php">
Meta::$title = "Tytuł";
Meta::$keywords = "Słowa Kluczowe";
Meta::$description = "Opis";
</pre>
<p>a nasz plik związany z widokiem miałby np. w znaczniku TITLE kod :</p>
<pre name="code" class="php">
echo Meta::$title
</pre>
<p>Jest to tylko pewna koncepcja, przykład &#8211; z powodzeniem moglibyśmy wykorzystać w takim przypadku wcześniej napisaną klasę tylko zawartości zmiennych ustalać nie w jej konstruktorze lecz w danym pliku modelu.</p>
<p>W przedstawionych przykładach dane są wpisane &#8222;ręcznie&#8221;, na &#8222;sztywno&#8221; jednak nic oczywiście nie stoi na przeszkodzie aby były one pobierane z bazy danych, pliku txt czy xml itd.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.bmedon.net/index.php/php/generowanie-osobnych-meta-tagow-dla-kazdej-strony/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Lekcja 1 &#8211; wstęp i instalacja wampa</title>
		<link>http://www.blog.bmedon.net/index.php/php/lekcja-1-wstep-i-instalacja-wampa/</link>
		<comments>http://www.blog.bmedon.net/index.php/php/lekcja-1-wstep-i-instalacja-wampa/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 15:54:29 +0000</pubDate>
		<dc:creator>Bartek Medoń</dc:creator>
				<category><![CDATA[Kurs PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[wamp]]></category>

		<guid isPermaLink="false">http://www.blog.bmedon.net/?p=101</guid>
		<description><![CDATA[Od pewnego czasu w sieci istnieje praktyczny kurs php mojego autorstwa. Został on napisany z myślą o własnym rozwoju, utrwalaniem własnej wiedzy, treningu programistycznym, stworzenia bazy przykładów, do których zawsze można zerknąć w razie &#8222;sklerozy&#8221; oraz aby pomóż innym &#8211; zarówno tym, którzy zaczynają przygodę z programowaniem jak i dla tych, którzy programować umieją jednak [...]]]></description>
			<content:encoded><![CDATA[<p>Od pewnego czasu w sieci istnieje <a title="Praktyczny Kurs PHP Bartka Medonia" href="http://soundpage.info/kurs_php/" target="_blank">praktyczny kurs php</a> mojego autorstwa. Został on napisany z myślą o własnym rozwoju, utrwalaniem własnej wiedzy, treningu programistycznym, stworzenia bazy przykładów, do których zawsze można zerknąć w razie &#8222;sklerozy&#8221; oraz aby pomóż innym &#8211; zarówno tym, którzy zaczynają przygodę z programowaniem jak i dla tych, którzy programować umieją jednak szukają innych rozwiązań czy wskazówek.<span id="more-101"></span><br />
Jak widzisz kurs nie ma specjalnie ciekawej oprawy graficznej (właściwie nie ma żadnej), jest dosyć chaotyczny itd&#8230; postanowiłem wraz z rozwojem bloga przepisywać systematycznie lekcje i umieszczać je tutaj. Niektóre pewnie zostaną poprawione (bo w końcu ja ciągle zdobywam doświadczenie i stwierdzę, że coś co kiedyś napisałem jest bee <img src='http://www.blog.bmedon.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) inne pominięte itd. Pojawią się też nowe !!</p>
<p>W kursie nastawiam się głównie na wykorzystanie PHP pod kątem tworzenia stron i wszelkich aplikacji Internetowych. Nie będę wychwalał swojej wiedzy oraz twierdził, że wszystkie przykłady są tylko i wyłącznie mojego autorstwa (czasami ktoś napisać coś tak dobrze, że nie warto tworzyć coś nowego). Prezentuje zarówno własne pomysły, przykłady jak i opieram się na tych z sieci i literatury (co zawsze staram się zaznaczyć co skąd pochodzi, czasem je modyfikuje według własnego uznania).</p>
<p>Sam uczyłem się z różnych tutoriali, kursów, e-booków i wydań papierowych. Pamiętaj jednak, że <strong>praktyka czyni mistrza, a najwięcej nauczymy się dzięki ciężkiej pracy, ćwiczeniom i wytrwałości</strong></p>
<h3>Co nam będzie potrzebne do rozpoczęcia nauki PHP ?</h3>
<p>Przede wszystkim zakładam, że przykłady będziesz testować na lokalnym komputerze (możesz również na jakimś koncie hostingowym) ponieważ może się zdarzyć, że nie będziesz mieć w danym miejscu dostępu do Internetu, a taki serwer możesz odpalić w każdej chwili.</p>
<p>Musisz więc zainstalować najlepiej jakiś pakiet serwerowy &#8211; ja polecam Ci <a href="http://www.wampserver.com/en/index.php" target="_blank" title="Pobierz wampserwer">wampserver</a>. Wystarczy ściągnąć plik i zainstalować go &#8211; z tym zapewne każdy z Was sobie poradzi. Następnie uruchomimy sobie w pakiecie polski język. Należy więc kliknąć prawym przyciskiem myszy na ikonie programu w trayu i wybrać odpowiednio język czyli :<br />
<div id="attachment_103" class="wp-caption aligncenter" style="width: 276px"><img class="z" src="http://www.blog.bmedon.net/wp-content/uploads/2009/08/wamp-ustawienie-jezyka-polskiego.jpg" alt="Wybór języka Polskiego w Wampserver" title="Wamp - ustawienie języka polskiego" width="266" height="484" class="size-full wp-image-103" /><p class="wp-caption-text">Wybór języka Polskiego w Wampserver</p></div></p>
<p>Kolejna ważna sprawa to włączenie opcji short open tag &#8211; nie będę na tym etapie tłumaczył po co nam potrzebne jest włączenie tej opcji, tym zajmę się później :<br />
<div id="attachment_105" class="wp-caption aligncenter" style="width: 386px"><img class="z" src="http://www.blog.bmedon.net/wp-content/uploads/2009/08/wamp-short-open-tag.jpg" alt="Wamp - włączenie opcji short open tag" title="Opcja short open tag w wampserver" width="376" height="668" class="size-full wp-image-105" /><p class="wp-caption-text">Wamp - włączenie opcji short open tag</p></div></p>
<p>Jak na razie to tyle opcji, które będą nam potrzebne na początek przygody z wampem. Wraz z kolejnymi lekcjami będę wspominał o kolejnych. Pliki *.php gdzie będziesz testował swoje skrypty i programy należy umieszczać w katalogu <em>C:\wamp\www</em> przy domyślnej instalacji pakietu serwera. Pamiętaj, że aby testować musi on być uruchomiony (po prostu odpalasz skrót z pulpitu czy tam menu start). Pliki *.php możesz wrzucać domyślnie do wspomnianego katalogu lub też tworzyć w nim kolejne katalogu co pozwoli na utrzymanie porządku <img src='http://www.blog.bmedon.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Po uruchomieniu wampa w przeglądarce możemy uruchomić stronę główną serwera poprzez adres <em>http://localhost</em> lub <em>http://127.0.0.1</em>.</p>
<h3>W jakich programach pisać ?</h3>
<p>Programów jest bardzo dużo, możesz nawet pisać w zwykłym notatniku windowsa, ale nie poradzi sobie on z każdym rodzajem kodowania polski znaków. Jednak czasem i ten poczciwy notatniczek się przydaje <img src='http://www.blog.bmedon.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Ja korzystam właśnie z niego poza tym z programów jak notepad2, Tiger II MiniPad, PHP Designer.</p>
<p>To tyle tytułem wstępu i wspomnienia o narzędziach jakie są Tobie potrzebne do efektywnej nauki języka PHP. Zapraszam na kolejne lekcje <img src='http://www.blog.bmedon.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.bmedon.net/index.php/php/lekcja-1-wstep-i-instalacja-wampa/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Jak wykonać funkcję na fragmencie ciągu, zmiennej</title>
		<link>http://www.blog.bmedon.net/index.php/php/jak-wykonac-funkcje-na-fragmencie-ciagu-zmiennej/</link>
		<comments>http://www.blog.bmedon.net/index.php/php/jak-wykonac-funkcje-na-fragmencie-ciagu-zmiennej/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 09:52:34 +0000</pubDate>
		<dc:creator>Bartek Medoń</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.blog.bmedon.net/?p=58</guid>
		<description><![CDATA[Opiszę tutaj rozwiązanie, z którym kiedyś sam miałem problem, a to z racji, że nie znałem (bo jakoś wcześniej nie była mi potrzebna) pewnej funkcji PHP. O co konkretnie chodzi &#8211; przykładowo mamy jakiś ciąg znakowy czy tam zmienną (string) i chcielibyśmy wykonać na nim funkcję htmlspecialchars, ale nie na całym tekście lecz na określonym [...]]]></description>
			<content:encoded><![CDATA[<p>Opiszę tutaj rozwiązanie, z którym kiedyś sam miałem problem, a to z racji, że nie znałem (bo jakoś wcześniej nie była mi potrzebna) pewnej funkcji PHP. O co konkretnie chodzi &#8211; przykładowo mamy jakiś ciąg znakowy czy tam zmienną (string) i chcielibyśmy wykonać na nim funkcję htmlspecialchars, ale nie na całym tekście lecz na określonym fragmencie. Zadasz pytanie, ale w ogóle po co ?<span id="more-58"></span><br />
A więc nazwijmy to &#8222;odwrotnym bbcodem&#8221; (to moja nazwa więc nie sugerujcie się tym) czyli załóżmy, że wprowadzany w jakimś panelu czy formularzu tekst może być interpretowany jako HTML, ale jednocześnie chcielibyśmy żeby niektóre części były traktowane jako znaki (czyli po prostu wyświetlić wpisany kod jako znaki, a nie żeby przeglądarka go zinterpretowała). Powiem od razu, że to nie jest wcale dobre rozwiązanie &#8211; do takich rzeczy cały wprowadzony ciąg &#8222;zabezpieczamy&#8221; htmlspecialchars czy też strip_tags, a tam gdzie chcemy interpretować kod stosujemy bbcode.<br />
Jednak przypuśćmy, że chcemy zrobić tak jak napisałem wyżej. Wydaje się to być proste, ale wcale tak nie jest &#8211; na pierwszą myśl mogą przyjść funkcje eregi_replace czy str_replace &#8211; niestety sprawdzi się to dobrze, ale w przypadku pojedynczego wystąpienia elementów do zamiany. No więc wpadamy na pomysł z preg_replace hmm no niestety nie da rady do jej &#8222;środka&#8221; wsadzić jakiejś funkcji. No i tak rozwiązując ten problem dotarłem do funkcji <strong>preg_replace_callbac</strong>, która umożliwia nam dla znalezionego fragmentu wykonać jakaś funkcję (wykonać na nim).</p>
<p>Funkcja ta przyjmuje składnię :</p>
<pre name="code" class="php">
preg_replace_callback("wyrażenie_regularne","funkcja_do_wykonania",zmienna w ktorej szukamy);
</pre>
<p>Więc piszemy sobie 2 funkcje :</p>
<pre name="code" class="php">
function konwertuj($matches)
{
$kodowanie = htmlspecialchars($matches[1]);
$kodowanie = nl2br($kodowanie);
$kodowanie = str_ireplace( "\t" , "<span class=\"tabb\"></span>",$kodowanie);
$zwroc = "
<div class=\"pokaz_kod\">$kodowanie</div>

\n";
return $zwroc;
}
function zamiana($string)
{
$string = preg_replace_callback("#\[KODE\](.*?)\[/KODE\]#si","konwertuj",$string);
return $string;
}
</pre>
<p>Funkcja zamiana wyszukuje w podanym ciągu, zmiennej (jako jej argument) ciągu pomiędzy znacznikami [KODE] a [/KODE] i dla każdego znalezionego wywołuje funkcję konwertuj. Funkcja ta wykonuje na przekazanym jej argumencie funkcję htmlspecialchars, nl2br oraz zamienia znaki tabulatora na znaczniki span o pewnej klasie (zdefiniowanej w CSS).<br />
Jak widać problem, który mógłby się wydawać trudny rozwiązać można bardzo prosto.<br />
Warto jeszcze zapamiętać, że w momencie kiedy taki artykuł, tekst, który zawiera w sobie kod html nie skonwertowany chcemy edytować w polu textarea to należy przed jego wyświetleniem w takim polu poddać go działaniu funkcji htmlspecialchars, bo inaczej taki kod kod (zależnie co to za kod) może zostać zinterpretowany przez przeglądarkę i zrobią się nam &#8222;cuda&#8221;.</p>
<p>Poczytajcie sobie o funkcji <a href="http://pl2.php.net/preg_replace_callback" title="" target="_blank">preg_replace_callback</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.bmedon.net/index.php/php/jak-wykonac-funkcje-na-fragmencie-ciagu-zmiennej/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Problem z PostgreSQL i PHP pod WAMPSERVER</title>
		<link>http://www.blog.bmedon.net/index.php/php/problem-z-postgresql-i-php-pod-wampserver/</link>
		<comments>http://www.blog.bmedon.net/index.php/php/problem-z-postgresql-i-php-pod-wampserver/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 09:39:08 +0000</pubDate>
		<dc:creator>Bartek Medoń</dc:creator>
				<category><![CDATA[Bazy danych]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[wamp]]></category>

		<guid isPermaLink="false">http://www.blog.bmedon.net/?p=50</guid>
		<description><![CDATA[Swojego czasu trafiłem na wydawało się mi poważny problem. Mianowicie miałem wykonać projekt z przedmiotu relacyjne bazy danych i zainstalowałem sobie na lapku bazę PostgreSQL. Zainstalowany również miałem pakiet WAMPSERVER 2.0 &#8211; do pobrania tutaj. Nie będę opisywał tutaj czym jest WAMP bo nie o tym jest ten artykuł. Baza danych działała prawidłowo, ale problem [...]]]></description>
			<content:encoded><![CDATA[<p>Swojego czasu trafiłem na wydawało się mi poważny problem. Mianowicie miałem wykonać projekt z przedmiotu relacyjne bazy danych i zainstalowałem sobie na lapku bazę PostgreSQL. Zainstalowany również miałem pakiet WAMPSERVER 2.0 &#8211; do pobrania <a href="http://www.wampserver.com/en/index.php" title="WampServer" target="_blank">tutaj</a>. Nie będę opisywał tutaj czym jest WAMP bo nie o tym jest ten artykuł. Baza danych działała prawidłowo, ale problem pojawił się w momencie kiedy chciałem połączyć się z nią przez PHP.<span id="more-50"></span><br />
Pojawiał się wtedy błąd typu :</p>
<pre name="code" class="php">
Fatal error: Call to undefined function: pg_connect()
</pre>
<p>Zacząłem więc szukać powodu &#8211; przeszukałem bardzo dużo różnych for, artykułów znalazłem masę wskazówek, rozwiązań &#8211; niestety żadne z nich nie pomogło. W końcu już tak szczerze mówiąc nie pamiętam gdzie (bo było to dość dawno) znalazłem rozwiązanie. Problemem były biblioteki związane z rozszerzeniami PHP w Wampie, a konkretnie biblioteki php_pdo_pgsql.dll oraz php_pgsql.dll. Okazało się, że w tej wersji Wampa są one po prostu uszkodzone (czy cuś takiego :p) i trzeba było je skopiować od kogoś kto takich problemów nie posiadał <img src='http://www.blog.bmedon.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Naprawdę długo szukałem aż znalazłem to rozwiązanie dlatego postanowiłem przedstawić tutaj rozwiązanie tego problemu i myślę, że komuś na pewno się przyda. Biblioteki w &#8222;dobrej wersji&#8221; znajdziecie w dziale <a href="http://www.bmedon.net/download.html" title="Pobierz" target="_blank">download na mojej stronie</a>. Dodam jeszcze, że biblioteki przy standardowej instalacji powinny zostać skopiowane do folderu C:\wamp\bin\php\phpX.X.X\ext</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.bmedon.net/index.php/php/problem-z-postgresql-i-php-pod-wampserver/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Programowanie Obiektowe w PHP</title>
		<link>http://www.blog.bmedon.net/index.php/php/programowanie-obiektowe-w-php/</link>
		<comments>http://www.blog.bmedon.net/index.php/php/programowanie-obiektowe-w-php/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 09:10:30 +0000</pubDate>
		<dc:creator>Bartek Medoń</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[programowanie obiektowe]]></category>

		<guid isPermaLink="false">http://www.blog.bmedon.net/?p=33</guid>
		<description><![CDATA[Często ktoś pyta mnie o programowanie obiektowe w języku PHP. Jak wiadomo od 5 wersji tego języka mamy możliwość naprawdę hmm przyjemnego i porządnego programowania obiektowego. Nie będę tutaj nikogo przekonywał o wyższości OOP nad programowaniem strukturalnym &#8211; na ten temat powstało sporo tekstów, artykułów, dyskusji na różnych forach itd. Znajdziecie również sporo książek, pdf&#8217;ów, [...]]]></description>
			<content:encoded><![CDATA[<p>Często ktoś pyta mnie o programowanie obiektowe w języku PHP. Jak wiadomo od 5 wersji tego języka mamy możliwość naprawdę hmm przyjemnego i porządnego programowania obiektowego. Nie będę tutaj nikogo przekonywał o wyższości OOP nad programowaniem strukturalnym &#8211; na ten temat powstało sporo tekstów, artykułów, dyskusji na różnych forach itd. Znajdziecie również sporo książek, pdf&#8217;ów, kursór i tutoriali na ten temat. <strong>Zapytacie więc &#8211; po co ten artykuł</strong> ?<span id="more-33"></span><br />
Odpowiedź jest prosta &#8211; kiedy ktoś pyta mnie o idee OOP i źródło nauki podstaw (ale nie tylko) to poza popularnym stwierdzeniem &#8222;zapytaj google&#8230;&#8221; czasem polecam mój kurs php, gdzie można znaleźć opis podstawowych technik w tym typie programowania, ale również znajdą się bardziej zaawansowane przykłady. Biorąc pod uwagę, że mój kurs był pisany głównie dla własnej nauki oraz aby w razie &#8222;sklerozy&#8221; mieć dostęp do różnych przykładów nie jest on ani pięknie wyglądający&#8230; ba wręcz jest chaotyczny. Nie mniej wszystko co w nim opisałem jest napisane językiem bardzo prostym wręcz łopatologicznym, aby każdy mógł zrozumieć &#8222;jak działa&#8221; programowanie.<br />
I tak biedna osoba, której poleciłem mój kurs musi przeszukiwać tan chaotyczny zbiór lekcji dlatego też postanowiłem zrobić tutaj malutki zbiór tych (lekcji), które tyczą się programowania obiektowego w php :</p>
<ul>
<li><a href="http://soundpage.info/kurs_php/kurs/135klasy_i_obiekty_wstep.php" target="_blank" title="Programowanie obiektowe w PHP wstęp">wstęp</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/136tworzenie_klasy.php" target="_blank" title="Programowanie obiektowe w PHP tworzenie klasy, implementacja obiektów">tworzeie klasy, implemetnacja obiektów</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/137metoda_klasy.php" target="_blank" title="Programowanie obiektowe w PHP tworzenie metod w klasie">metody w klasach</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/138klasy_potomne.php" target="_blank" title="Programowanie obiektowe w PHP operatory zasięgu, kalsy potomne, dziedziczenie">klasy potomne, operatory zasięgu</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/139obiektowy_licznik.php" target="_blank" title="Programowanie obiektowe w PHP obiektowy licznik, konstruktor, destruktor, static">obiektowy licznik, konstruktor, destruktor, operator static</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/140obiektowy_licznik_mysql.php" target="_blank" title="Programowanie obiektowe w PHP obiektowy licznik z użyciem bazy danych mysql">obiektowy licznik z bazą danych MySQL</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/175obiektowe_php_kapsulkowanie.php" target="_blank" title="Programowanie obiektowe w PHP kapsułkowanie">kapsułkowanie, funkcje dostępowe __get i __set</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/176obiektowe_php_dziedziczenie.php" target="_blank" title="Programowanie obiektowe w PHP dziedziczenie">dziedziczenie</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/177obiektowe_php_uniewaznianie.php" target="_blank" title="Programowanie obiektowe w PHP unieważanianie, operator final">unieważnianie funkcji rodzica, operator final</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/178obiektowe_php_interfejsy.php" target="_blank" title="Programowanie obiektowe w PHP interfejsy">interfejsy</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/183klasy_abstrakcyjne.php" target="_blank" title="Programowanie obiektowe w PHP klasy abstrakcyjne">klasy abstrakcyjne</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/179obiektowy_serwis_www.php" target="_blank" title="Programowanie obiektowe w PHP strona napisna obiektowo">strona w php napisana obiektowo</a> (to tylko przykład wykorzystania, nie sugerować się tym za żadne skarby świata)</li>
<li><a href="http://soundpage.info/kurs_php/kurs/180stale_metody_statyczne.php5" target="_blank" title="Programowanie obiektowe w PHP stałe zmienne klasy oraz funkcje">stałe klasowe i metody statyczne &#8211; operatory const, static i self</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/181wskazywanie_typow.php5" target="_blank" title="Programowanie obiektowe w PHP wskazywanie typu obiektu">wskazywanie typów, instanceof</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/225oop_klasa_funkcje.php5" target="_blank" title="Programowanie obiektowe w PHP funkcje dostarczające informacje o klasie">funkcje dostarczające informacje o klasie</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/230-1klasa-1egzemplarz.php5" target="_blank" title="Programowanie obiektowe w PHP możliwość stworzenia tylko 1 obiektu danej klasy">możliwość stworzenia tylko 1obiektu danej klasy, wzorzec Singleton</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/226serializacja.php5" target="_blank" title="Programowanie obiektowe w PHP serializacja, deserializacja">serializacja, deserializacja</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/228sleep_i_wakeup.php" target="_blank" title="Programowanie obiektowe w PHP __sleep i __wakeup">metody __sleep i __wakeup</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/182klonowanie_obiektow.php5" target="_blank" title="Programowanie obiektowe w PHP klonowanie obiektów">klonowanie obiektów danej klasy, metoda __clone</a></li>
<li><a href="http://www.soundpage.info/kurs_php/kurs/184przeciazanie_metod.php5" target="_blank" title="Programowanie obiektowe w PHP przeciążanie metod">przeciążanie metod, metoda __call</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/185metoda_autoload.php" target="_blank" title="Programowanie obiektowe w PHP autoload">metoda __autoload</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/186metoda_tostring.php5" target="_blank" title="Programowanie obiektowe w PHP toString">metoda __toString</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/229metody_lancuchowe.php5" target="_blank" title="Programowanie obiektowe w PHP łańcuchowe wiązanie metod">łańcuchowe wiązanie metod</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/187api_reflection.php5" target="_blank" title="Programowanie obiektowe w PHP API Reflection">API Reflection</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/189wyjatki_klasa_exception.php5" target="_blank" title="Programowanie obiektowe w PHP obssługa wyjątków">Obsługa wyjątków</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/192mysqli_obiektowy_modul.php" target="_blank" title="Programowanie obiektowe w PHP mysqli">obsluga bazy danych MySQL przy pomocy obiektowego modułu mysqli</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/193mysqli_instr_przygotowywane.php" target="_blank" title="Programowanie obiektowe w PHP mysqli - instrukcje przygotowywane">mysqli &#8211; instrukcje przygotowywane</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/231pdo.php" target="_blank" title="Programowanie obiektowe w PHP - PDO">obsługa bazy danych przez PDO</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/232adodb.php" target="_blank" title="Programowanie obiektowe w PHP - ADOdb">obsługa bazy danych przez ADOdb</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/227cache_danych.php" target="_blank" title="Programowanie obiektowe w PHP - cache informacji z bazy danych">cache informacji z bazy danych</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/218php_i_xml.php5" target="_blank" title="Programowanie obiektowe w PHP XML">php i xml</a>(banalny przykład)</li>
<li><a href="http://soundpage.info/kurs_php/kurs/219DOM.php" target="_blank" title="Programowanie obiektowe w PHP DOM">DOM</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/220dom_tworzenie_xml.php" target="_blank" title="Programowanie obiektowe w PHP DOM i tworzenie dokumentu XML">DOM &#8211; tworzenie XML&#8217;a</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/221xml_domnodelist.php5" target="_blank" title="Programowanie obiektowe w PHP Klasa DOMNodeList, zapytania XPath">Klasa DOMNodeList, zapytania XPath</a></li>
<li><a href="http://soundpage.info/kurs_php/kurs/222xml_walid_xsd_rng.php" target="_blank" title="Programowanie obiektowe w PHP walidacja XMLa">Walidacja XML&#8217;a na podstawie XML Schema oraz RelaxNG</a></li>
</ul>
<p>Przedstawione lekcje są nadal aktualne, ale fakt faktem, że niektóre były pisane dosyć dawno więc warto zajrzeć też na inne strony &#8211; znajdziecie masę kursów, książek, for dyskusyjnych, które pozwolą Wam na kontynuację nauki OOP kiedy już zapoznacie się z tym co ja sobie tam naskrobałem <img src='http://www.blog.bmedon.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.bmedon.net/index.php/php/programowanie-obiektowe-w-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
