Blog Day 2008

Wpis napisany 31 sierpnia 2008 w kategoriach: Internet, Wszystkie | 20:22:48 | 1 komentarz

Nie będę się rozpisywał, totaj podam nieco blogów, które polecam wszystkim interesującym się programowaniem w PHP i nie tylko:

  • Zyxist.com - blog twórcy systemu szablonów OPT - Zyx'a. Znajdziecie tam sporo na temat projektów autora (Open Power Libs) oraz sporo jego artykułów. Pojawiają się też czasem osobiste wpisy, które zawsze są na wysokim poziomie :). Czytam od dawna i żałuję, że dość rzadko się tam coś pojawia.
  • Ubuntu tweak - blog opisujący różne ciekawostki, rozwiązania ze świata Ubuntu. Pomimo, że nie używam tej dystrybucji często dowiaduję się o ciekawych rozwiązaniach czy programach. Dodatkową zaletą jest częsta aktualizacja.
  • Magiczne SEO - świetny blog poświęcony SEO, SEM oraz usługom Google'a. Naprawdę ciekawe artykuły o początkach tej firmy oraz porady odnośnie jego usług (jak choćby wpis o tym "Jak zobaczyć kompletny referrer w Google Analytics").
  • Dymecki.pl - blog poświęcony marketingowi i usability stron internetowych. Wylądował pewnego pięknego dnia w czytniku i tam pozostał.
  • Ninaque - blog znajomego na temat Web 2.0. Ciekawe wpisy odnośnie internetu i różnych serwisów. Szkoda że tak rzadko aktualizowany.

PHP 5.3/6.0 - robi się coraz ciekawiej cz.2

Wpis napisany 29 sierpnia 2008 w kategoriach: PHP/MySQL, Techblog, Wszystkie | 17:08:11 | 10 komentarzy

Dzisiaj napiszę o nieco częściej reklamowanej zmianie która dostanie się do nowych wersji PHP. Mowa tutaj o przestrzeniach nazw. Nigdy nie miałem okazji tworzyć czegoś poważnego w języku, który je obsługuje (uczę się podstaw Javy, poza tym pisałem kilka programów w C++), jednak postaram się opisać ich działanie najlepiej jak potrafię.

Funkcjonalność ta powstała, aby zapobiec powtarzaniu się nazw klas, funkcji i obiektów w różnych bibliotekach. Dzięki niej dwie klasy DB mogą istnieć w jednym projekcie. Obecnie stosuje się prosty trick, polegający na dodaniu nazwy biblioteki do nazwy klasy (np. ADOConnection, ADORecordSet). Nie jest to jednak wygodne, ponieważ wymusza na programiście wpisywanie tej długiej nazwy w każdym miejscu aplikacji... Naprawdę współczuję tym, którzy nie mają funkcji uzupełniania nazw w edytorze ;).

Czytaj dalej »

Funkcje ADOdb i wykonywanie zapytań cz.1

Wpis napisany 23 sierpnia 2008 w kategoriach: PHP/MySQL, Techblog, Wszystkie | 12:13:11 | 7 komentarzy

W dzisiejszym wpisie chciałbym zaprezentować część możliwości biblioteki ADOdb służącej do zarządzania komunikacją z bazami danych. Miałem okazję korzystać z pewnego skryptu w którym pomimo wykorzystania jej kodu, autor używał niewiele ponad trzy metody w swoim projekcie. Na początek zapoznamy się z kilkoma ciekawymi funkcjami klasy ADOConnection (w tym wpisie obiekt tej klasy zapisywany będzie jako $db). Dla kontrastu poniżej każdego przykładu użycia będę podawał jak taki kod wyglądałby w wyżej omawianym przeze mnie skrypcie. Na początek lista:

  • $db -> Execute()
  • $db -> getAll()
  • $db -> getRow()
  • $db -> getOne()
  • $db -> SelectLimit()
  • $db -> ErrorMsg()

Czytaj dalej »

Propel 1.3 wydany!

Wpis napisany 21 sierpnia 2008 w kategoriach: PHP/MySQL, Techblog, Wszystkie | 19:45:39 | 4 komentarze

Przez jednych znienawidzony, przez drugich uwielbiany. Nowa wersja Propel'a ujrzała wczoraj światło dzienne. Długo czekałem na tę chwilę, ponieważ używam go w jednym z moich projektów. Co prawda miałem zamiar go porzucić ze względu na spore ograniczenia i słabą wydajność, jednak dam mu szansę do czasu aż dokładniej przyjrzę się możliwościom nowego wydania. Co znajdziemy w nim nowego?

  • PDO jako sterownik bazy danych (zamiast Creole)
  • Obsługa dla automatycznego ładowania klas (SPL autoload)
  • Relacje jeden do jednego
  • Wyrażenia jako domyślne wartości pól
  • Ulepszona obsługa dat i czasu

Więcej na stronie o aktualizacji aplikacji do Propel'a 1.3. Jak wam podobają się zmiany? Używacie Propel'a? A może według was to okropna kobyła, na którą nie warto spoglądać? Moim zdaniem przepisanie wszystkiego na PDO było bardzo dobrym rozwiązaniem i może przynieść całkiem niezły efekt.

PHP 5.3/6.0 - robi się coraz ciekawiej cz.1

Wpis napisany 21 sierpnia 2008 w kategoriach: PHP/MySQL, Techblog, Wszystkie | 17:26:15 | 28 komentarzy

Niedawno z ciekawości zajrzałem na stronę PHP.net w poszukiwaniu pomysłu na wpis. I znalazłem go bardzo szybko. Na początku sierpnia wydano pierwszą wersję alfa PHP 5.3. Postanowiłem przyjrzeć się z bliska liście zmian. Moją uwagę przyciągnęła dosyć dziwnie brzmiąca zmiana: "Lambda functions and closures". Po bliższym przyjrzeniu się zmianom opisanym na wiki PHP, stwierdzam że takiej funkcjonalności niesamowicie mi brakowało! Pewnie spora część użytkowników tego bloga potrafi programować w JS. Jeżeli nie, to spójrzcie na ten kawałek kodu:

 
something = function() { return true; }
something();
 

W przypadku JavaScript'u, każdą funkcję można było przypisać zwyczajnie do zmiennej, a następnie wykonać ją lub przekazać do innej funkcji jako parametr. Zobaczmy jak to wygląda w przypadku JS:

 
something = function() { return true; }
anyThing(something, 'string');
 

W jaki sposób uzyskać podobną funkcjonalność w PHP? Nie jest to takie łatwe. Musimy wykorzystać do tego instniejącą funkcję create_function lub zdefiniować ją wewnątrz skryptu.

 
//wersja z create_function()
$fn = create_function('$param1', 'echo $param1; return true;');
$fn('something');
//wersja z definiowaniem własnej funkcji
if(!function_exists('lambda_1'))
{
    function lambda_1($param1)
    {
        echo $param1; return true;
    }
    $fn = 'lambda_1';
}
$fn('something');
 

A tutaj już wersja z tak zwaną funkcją lambda (nie mam pojęcia jak to przetłumaczyć):

 
$fn = function($param1)
{
    echo $param1;
    return true;
};
$fn('something');
 

Warto zwrócić uwagę na średnik znajdujący się po zamykającej klamrze. Według wiki PHP, jest on niezbędny z niewiadomych mi powodów (coś z parserem), poza tym twórcy tego rozwiązania twierdzą, że podobna składnia i tak funkcjonuje już w pętli while-do.

Jakie są zalety takiego rozwiązania? Jest ich kilka. Po pierwsze, działa nam kolorowanie składni (w przypadku create_function treść funkcji znajduje się w ciągu znaków - tracimy sporo na czytelności). Po drugie, nie musimy obawiać się, że funkcja o danej nazwie może już istnieć. Nie musimy także troszczyć się o przypisanie nazwy funkcji do zmiennej, wszystko dzieje się automatycznie. Dodatkowo, według wiki PHP, rozwiązanie przy pomocy create_function() nie jest cache'owane przez różnej maści optymalizatory kodu (vide Zend Optimizer). Przejdźmy teraz do drugiej funkcjonalności. Są to tzw. closures. Pozwalają one na przekazanie do funkcji lambda na stałe pewnych zmiennych. Działanie bardzo proste do global'i, jednak w tym przypadku do funkcji przekazywana jest kopia obiektu (chyba, że dodamy przed nazwą zmiennej ampersand). Składnia jest bardzo prosta:

 
$var = function($param1, $param2) use($globalvar)
{
    return $param1 + $param2 + $globalvar;
}
 

W ten sposób nasze lambda functions mogą zawierać pewne dynamiczne dane, które będą pochodziły z zewnątrz skryptu, bez konieczności ich późniejszego przekazywania jako parametr. Muszę przyznać, że obydwie funkcjonalności naprawdę mocno mnie zainteresowały i nie mogę się doczekać paczek dla Arch'a z wersjami testowymi PHP żeby pobawić się nowym PHP5.3. W następnych wpisach pojawią się dalsze funkcjonalności PHP5.3 które zostały już wprowadzone. Na które z nich czekacie najbardziej? A może nie podoba wam się kierunek, w którym zmierza PHP?

© Powered by JoggerPL and Albi