piątek, października 26, 2007

Pomysły:
  1. Zend próbuje powielać pomysły J2EE starając się "podrasować" i ukryć niedostatki iPHP, ale to daje tylko większą komplikację w jego opanowaniu przez "masy". Poza tym nie ma jako tako serwera aplikacyjnego w prawdziwym tego slowa znaczeniu.
  2. Zaletą PHP jest to, że można w nim wystartować od razu bez dużych nakładów na serwer, ale w miarę wzrostu złozoności i rozmiaru aplikacji zaczyna się coś w nim zakleszcza i zaciera.
  3. TAG i JSTL to próba podejścia do zmniejszenia komplikacji kodu i stosowanych technik potrzebnych do stworzenia aplikacji internetowej poprzez przerzucenie komplikacji na obszar deklaratywny (znaczniki) zamiast podejścia proceduralnego.
  4. Stosując frameworki i niezbędne do tworzenia aplikacji szablony w j. programowania doprowadzam do mistrzostwa powielania pewnych stałych elementów gry (otoczek obiektów) robiąc to w sposób małpy doskonałej aż w końcu dochodzi do napisania czegoś w stylu "return stała".
  5. Mało doceniana, ale nadal ważna technologia "pomostowa" - połączenie grubego klienta z możliwością połączenia z Internetem (MS proponuje usługi webowe w klasycznym wykonania np. MS Live, Yahoo -Widgets, Google - Gear). Do gry wchodzi Mozilla - webRunner (a w nowym wykonaniu Prism).
  6. Dostęp do wspólnego pola pamięci (do komunikowania się) w technologii serwera aplikacji J2EE pozwala na bardzo wyszukiwane przetwarzanie danych wchodzących (response - pamiętajmy, że wszystko kręci się wokół klienta) i wychodzących (request) w aplikacji Internetowej. Przykład - formularz wysyła dane do serwera (tj. żąda danych), przyjmuje je servlet, który przetwarza je (dopisuje do strumienia danych request inne obiekty np. kolekcje zleceniem req.setAttribute() i przesyła dalej np. do JSP (jak poprzez Dispatchera). Wykorzystuje się programowanie strumieniowe (stream) i rurociągi (pipes).
  7. Duży potencjał tkwi w wykorzystaniu AJAX w aplikajach PHP i JAVA ciekawe jakich technologii używają (wiem, że w JAVA jest to DWR i GWT, a w przypadku ZEND - nie wiem, PHP wiem SAJAX, nAJAX lub JPOP)

wtorek, października 23, 2007

niedziela, października 21, 2007

XML i PHP:
  1. PHP 5.0 realizuje dostęp do XML poprzez SimpleXML. Inny tutorial o tablicach (http://www.motov.biz/php/php-arrays-the-ultimate-guide.html) i funkcjach. Do XML można podejść dwojako:
    1. SAX - czytać cześciowo dokument XML i uruchamiać specjalne funkcje użytkownika po napotkaniu interesującego nas węzła (callback)
    2. DOM - czytanie (bardzo rozrzutne) całego dokumentu do pamięci z zbudowanie drzewka odzwierciedlającego hierarchię dokumentu
  2. W PHP 5.0 wzięto na tapetę implementację biblioteki w C++ zwanej libxml2. Dodatkowe rozszerzenia zrobili: Sterling Hughes, Rob Richards and Marcus Börger.
  3. Duży wkład w prace nad zunifikowanym DOM - http://dean.edwards.name/weblog/
  4. Przykład:<?php

    // set name of XML file
    $file = "pet.xml";

    // load file
    $xml = simplexml_load_file($file) or die ("Unable to load XML file!");

    // access XML data
    echo "Name: " . $xml->name . "n";
    echo "Age: " . $xml->age . "n";
    echo "Species: " . $xml->species . "n";
    echo "Parents: " . $xml->parents->mother . " and " . $xml->parents->father . "n";

    ?>
  5. Modyfikacja:$xml->name = "Sammy Snail";
    $xml->age = 4;
    $xml->species = "snail";
    $xml->parents->mother = "Sue Snail";
    $xml->parents->father = "Sid Snail";

    // write new data to file
    file_put_contents($file, $xml->asXML());
  6. Inny przykład, operacja na atrybutach:<?php

    // create XML string
    $str = <<< XML
    <?xml version="1.0"?>
    <shapes>
    <shape type="circle" radius="2" />
    <shape type="rectangle" length="5" width="2" />
    <shape type="square" length="7" />
    </shapes>
    XML;
    // load string
    $xml = simplexml_load_string($str) or die ("Unable to load XML string!");

    // for each shape
    // calculate area
    foreach ($xml->shape as $shape) {
    if ($shape['type'] == "circle") {
    $area = pi() * $shape['radius'] * $shape['radius'];
    }
    elseif ($shape['type'] == "rectangle") {
    $area = $shape['length'] * $shape['width'];
    }
    elseif ($shape['type'] == "square") {
    $area = $shape['length'] * $shape['length'];
    }
    echo $area."n";
    }
    ?>
  7. Można stosować XPath:

    <?php

    // set name of XML file
    $file = "ingredients.xml";

    // load file
    $xml = simplexml_load_file($file) or die ("Unable to load XML file!");

    // get all the <desc> elements and print
    foreach ($xml->xpath('//item[quantity > 1]/desc') as $desc) {
    echo "$descn";
    }

    ?>