Claudiu Persoiu

Blog-ul lui Claudiu Persoiu


Archive for the ‘php5’ tag

The new ZCE PHP 5.3 certification

without comments

Since PHP 5.3 was released last year I’ve been wandering if Zend was going to introduce a new ZCE certification for this version.

Seems like with the version PHP 6 abandoned some time back the direction was to a PHP 5.3 certification.

I don’t think the time was random considering that Zend Con, the biggest PHP conference, is near.

What’s new?

Differences between PHP 5 and PHP 5.3 are in the manual here.

Some of the most important once:

Materials

The certification information is on the Zend website.

After finding that the certification for Zend Framework has a study guide completely free for registered users, I was wandering why there isn’t one for the regular PHP certification. It looks like now there is: Zend-PHP-5.3-Study-Guide-v1-3.pdf, in beta version! And is free for download!

Of course the most important material remains the manual manualul PHP, because the guide is used in conjunction with it.

It looks like the mock tests are out, as for the Zend Framework never existed anyway.

Price

The price has gone up, it isn’t 160$ anymore but 190$! The price remains a very small one anyway considering that an exam at Sun was 200$, and now at Oracle is 300$.

The already certified users receive an 20% discount until the end of the year, so if you are already certified you will pay 152$.

Best of luck!

Written by Claudiu Persoiu

17 October 2010 at 12:12 PM

Posted in PHP

Tagged with , , ,

CodeIgniter 1.7 Packt Publishing – Book review part 2

without comments

1847199488CodeIgniter is an open-source PHP framework build for RAD.
The book CodeIgniter 1.7 from PacktPublishing, written by  Jose Argudo Blanco and David Upton is trying to build an overall image of of the CodeIgniter framework,  as an addintion to the user guide.

The book is not a reference, and that becomes obvious with every chapter, each time a new feature of the CodeIgniter framework is introduced the user is directed to the corresponding page of the module in the user guide or wiki. Even more, suggestions are made for alternative modules that can achieve a similar task in a different way.

Authors say that only minimal knowledge of PHP is necessary to read this book, a promise that is hard to keep in my opinion, usually books that target novice to medium skill readers are saying something like that. To my surprise they ware right, the reader only needs PHP4 knowledge. And when it comes to OOP not even PHP5 features are required, just the PHP4 object model. In this book even the copping objects by reference is described! Of course copping objects by reference is no longer a relevant issue with PHP5, but taking this in to consideration that is an PHP4 framework it was a good idea to mention and explain it. It seems like there are still PHP4 server on the Internet… that is just sad…

Reading the book flashbacks came to my mind with pieces of code written directly in PHP and the hell of debugging them, trying to understand other peoples code… what times… horribly of course. The reasoning behind this concepts of re usability in a framework is just  great: “Possibly you like typing regex. Some people like lying on a bed of nails…”. When a developer, especially a beginner, is reading something like this it makes him understand that you don’t have to reinvent the wheel each time, but just use solutions already developed by others.

Comparing between different available solutions I believe is the most funny part of a book like this. Is difficult or even impossible to compare for instance Zend Framework or even CakePHP with CodeIgniter. After all almost all frameworks say the same thing, just download and start working. Personally when I need to use a module from Zend Framework I just load the autoloader and get to work. The comparison shows CodeIgniter as a winner for most users, as expected, the reasoning behind that claim is pretty honest.  Afterall is a small framework and does not have complex features like autogenerating CRUD. I remember a Java book where the author was representing the fact that C++ is faster then Java as a disadvantage, of course was just silly.

I sometimes had the impression that the terms were wrongly defined. The authors are using “small” mistakes in terms to explain what’s actually happening in the background. When you are working with MVC frameworks some of the notions are simple and obvious, but for a developer that’s not familiar with that terms there are quite hard to comprehend.

And to continue with the mistakes in the book, I’ve found a few. Quite a difficult moment when you start learning something new. Fortunately there are quite obvious because they result in errors, and if you read chapter after chapter you’ll know what the issue is and how to fix it.

Examples are pretty consistent and well documented. When a new concept or module is introduced it is fully explained in detail.

The resulting apps are not very complex, for instance at the end of the book there isn’t a full complex app like a CMS, rather modules and the way there are combined is explained. The user will have to decide in the end how will his app look and feel. For instance in chapter 13 pagination and ordering is explained. When pagination is used everything is OK, but when ordering is introduced the pagination begin to slip. It took me about 5-10 minutes to fix the issue, but it would have been nice for the authors to fix the issue themselves.

Overall is a good book, especially for users that have no prior knowledge of CodeIgniter, is just like is presented by the authors, a book for developers that want more productivity in there work or just what to see what other tools are out there.  The book does not present full solutions like a CMS or a shopping cart, but rather what this framework has to offer.

An advanced developer can understand from this book the structure of the CodeIgniter framework, possibly to compare it to other popular frameworks, without loosing time with complex and irrelevant examples.

Written by Claudiu Persoiu

22 March 2010 at 4:14 PM

Posted in Diverse,PHP

Tagged with , ,

Factory method pattern using PHP 5.3 and late static bindings

without comments

Factory method design pattern introduced by GoF (Gang of Four) which I’ve talked about in a previous blog, has the base idea of a method that generates objects. Most implementations are “poor”, because they use a lot of hard-coding for the factory (just like me in the previous blog).

PHP 5.3 offers the possibility of a very interesting implementation using “Late static bindings“.

The classes from which the objects will be generated are:

// abstract base class that will be inherited
abstract class Drink {

    // ingredients
    protected $ingredients;

    // public method for producing the drink
    abstract public function MakeDrink();
}

// a child class for tea
class Tea_Drink extends Drink {

    // ingredients for tea
    protected $ingredients = array('tea', 'sugar', 'mink', 'water');

    // make tea
    public function MakeDrink() {

        // make tea
    }
}

// another class for Bloody Mary
class BloodyMary_Drink extends Drink {

    // ingredients for Bloody Mary
    protected $ingredients = array('votka', 'salt', 'tomato juice');

    // make Bloody Mary
    public function MakeDrink() {

        // make BloodyMary

    }
}

The idea is to have an abstract factory class to extend as simple as possible when creating each new factory class.

PHP 5

In PHP 5 the class will look something like this:

// abstract Factory class
abstract class absFactory {

    // name of the base class
    static protected $base_class = '';

    // factory method
    public static function getInstance($type) {

        // name of the resulting class
        $class_name = $type . '_' . self::$base_class;

        // check if class exists
        // here you can add an autoloader
        if(!class_exists($class_name)) {
            throw new Exception( 'Class ' . $class_name . ' not loaded!');
        }

        // check to see if the class inherits the base class
        if(!is_subclass_of($class_name, self::$base_class)) {
            throw new Exception(
                'Class ' . $class_name . ' is not a child of ' . self::$base_class
            );
        }

        // new object
        return new $class_name;

    }

}

Because the getInstance() method is static the property will be static too.

If we try:

class DrinkFactory extends absFactory {

    static protected $base_class = 'Drink';
}

try {

    $obj = DrinkFactory::getInstance('Tea');

} catch (Exception $e) {

    echo $e->getMessage();
}

The output will be:

Class Tea_ not loaded!

Because of the “self”, we can’t just call the method using the child class because the value of $base_class will be “” and not “Drink”, we must overwrite the getInstance() method. Which is quite “complicated”.

A working version in PHP 5 will be:

class DrinkFactory extends absFactory {

    public static function getInstance($type) {

        self::$base_class = 'Drink';

        // factory method of the base factory class
        parent::getInstance($type);

    }

}

try {

    $obj = DrinkFactory::getInstance('Tea');

} catch (Exception $e) {

    echo $e->getMessage();
}

But is not exactly “elegant”.

PHP 5.3

Here we have “Late static bindings”, which is basically introducing the work “static”.

The base factory class will look something like this:

// abstract Factory class
abstract class absFactory {

    // name of the base class
    static protected $base_class = '';

    // factory method
    public static function getInstance($type) {

        // name of the resulting class
        $class_name = $type . '_' . static::$base_class;

        // check if class exists
        // here you can add an autoloader
        if(!class_exists($class_name)) {
            throw new Exception( 'Class ' . $class_name . ' not loaded!');
        }

        // check to see if the class inherits the base class
        if(!is_subclass_of($class_name, static::$base_class)) {
            throw new Exception(
                'Class ' . $class_name . ' is not a child of ' . static::$base_class
            );
        }

        // new object
        return new $class_name;

    }

}

The differences from the PHP 5 are marked with bold. A change so small allows us to create a much “nicer” factory class:

class DrinkFactory extends absFactory {

     static protected $base_class = 'Drink';

}

try {

    $obj = DrinkFactory::getInstance('Tea');

} catch (Exception $e) {

    echo $e->getMessage();
}

Basically in this version only the relevant property in this context is overwritten.

Written by Claudiu Persoiu

24 January 2010 at 5:46 PM

Posted in Design patterns,PHP

Tagged with , , ,

PHP 5.3 ce aduce nou?

without comments

Pana la versiunea mult asteptata 6, PHP 5.3 este deja la RC 2.

PHP 5.3 vine cu multe lucruri noi, de fapt sunt atat de multe incat putea sa fie cu succes versiunea 6, dar de ce nu este PHP 6? Pentru ca toata lumea se asteapta ca versiunea 6 sa aiba suport Unicode, iar cand o comunitate de programatori asteapta de mai bine de 3 ani asta, nu poti pur si simplu sa le spui ca te-ai gandit sa lasi suportul pentru Unicode pentru versiunea 7.

Namespaces

Printre noutati se afla si namespaces, mi se pare o idee interesanta dar nu fantastica, initial acestea nu erau pe lista de prioritati pentru ca se considera ca problema lor se poate rezolva relativ simplu folosind prefixuri si clase.

Un exemplu de namespace:

<?php
// clasa.php

// definirea namespace-ului, in cazul asta trebuie sa fie prima instructiune din fisier
namespace teste;

// o clasa cu un conscturctor
class clasaTest {
   function __construct() {
      echo "in constrcutor";
   }
}

// o functie
function funcTest() {
   echo "in functie";
}

// o constanta
const CONSTANTA = 'global';
?>

Acelasi fisier se mai poate defini intr-un anumit namespace si in felul urmator:

<?php
// clasa.php

// definirea namespace-ului
namespace teste {

   // o clasa cu un conscturctor
   class clasaTest {
     function __construct() {
        echo "in constrcutor";
     }
   }

   // o functie
   function funcTest() {
      echo "in functie";
   }

   // o constanta
   const CONSTANTA = 'global';

}
?>

Fisierul in care fac testele:

<?php

// includem fisierul de mai sus
require('clasa.php');

$obj = new clasaTest(); // Fatal Error:clasa 'clasaTest' not found in ...

$obj2 = new teste\clasaTest(); // afisaza "in constructor"

// aparent suprascriem constanta
const CONSTANTA = 'local';

echo CONSTANTA; // afisaza "local"

echo teste\CONSTANTA; // afisza "global"

teste\funcTest(); // afisaza "in functie"

?>

iar daca vrem sa nu mai folosim operatorul “\” si numele namespace-ului:

<?php
// trebuie sa fie prima insctructiune
namespace teste;

// includem fisierul de mai sus
require('clasa.php');

$obj = new clasaTest(); // afisaza "in constructor";

// suprascriem constanta
const CONSTANTA = 'local'; // Notice: Constant teste\CONSTANTA already defined in...

echo CONSTANTA; // afisaza global

?>

Si acestea sunt functiile de baza, folosindu-le pe acestea o sa ajute portabilitatea, si scalabilitatea. Acum numele de clase si functii nu mai trebuie sa fie unice, trebuie pur si simplu sa fie in namespace-uri diferite.

Functile lambda si “closures”

Cele mai interesante facilitati mi se par functile lambda si “closures”.

Suna cunoscut? Poate pentru ca sunt foarte folosite in JavaScript:

<script language="javascript">
closure = function(text) {
   alert(text);
}

closure("hello");
</script>

Iar acum in php este posibil:

<?php
$closure = function ($text) {
   return $text;
};

echo $closure("hello");
?>

Tot la functii lambda si “closures” a mai fost introdus si “use”, care permite folosirea unor variabile din exterior:

<?php
$x = 'Claudiu';
$closure = function ($text) use ($x) {
   return $text.' '.$x;
};

echo $closure("hello"); // afisaza "hello Claudiu"
?>

Iar daca in exemplul de mai sus vrem sa modificam variabilele care sunt parametri la “use” nu trebuie decat sa le trimitem prin referinta:

<?php
$x = 'Claudiu';
$closure = function ($text) use (&$x) {
   $x = 'utilizator';
   return $text;
};

echo $closure("hello"); // afisaza "hello"

echo $x; // afisaza "utilizator"
?>

Iar ca sa luam un exemplu concret unde pot fi utile, sa zicem functia “usort“:

<?php
function cmp($a, $b)
{
    if ($a == $b) return 0;
    return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

// este echivalent cu:

$a = array(3, 2, 5, 6, 1);

usort($a, function ($a, $b){
    if ($a == $b) return 0;
    return ($a < $b) ? -1 : 1;
});
?>

Dragut, nu? Cred ca asa se vede si mult mai clar ce se intampla in functie si la ce foloseste aceasta.

De asemenea obiectele se pot comporta ca niste closures folosind noua “metoda magica” __invoke():

<?php 

class testCl {
   function __invoke() {
      return "metoda de closure";
   }
}

$obj = new testCl(); // instantiem clasa
echo $obj(); // o apelam ca pe un closure si afisaza "metoda de closure"

?>

NOWDOC

NOWDOC este similar cu HEREDOC doar ca nu interpreteaza variabilele si caracterele speciale. Cu alte cuvinte HEREDOC era echivalentul ghilimelelor duble, NOWDOC este echivalentul ghilimelelor simple:

<?php

$var = "5";

// ghilimele duble
echo "Valoarea este: $var <br>"; // "Valoarea este 5"

// ghilimele simple
echo 'Valoarea este: $var <br>'; // "Valoarea este $var"

// HEREDOC
echo <<<HEREDOC
Valoarea este: $var <br>
HEREDOC;
// "Valoarea este 5"

// NOWDOC
echo <<<'NOWDOC'
Valoarea este: $var <br>
NOWDOC;
// "Valoarea este $var"

?>

Operatorul “?”

Acest operator a fost putin “inbunatatit”:

<?php
// inainte
echo $_GET['ceva']?$_GET['ceva']:false;

// acum
echo $_GET['ceva']?:false;

?>

Cu alte cuvinte acum conditia poate fi folosita ca valoare pentru adevarat.

goto

Sincer… nuprea vad de ce era nevoie de asa ceva, dar poate nu e chiar asa rau. Si un mic exemplu:

<?php

$x = 1;

label1:
echo "la label1 $x <br>";
$x++;

if($x>3) goto label2;
goto label1;

label2:
echo "la label2";

// va afisa:
// la label1 1
// la label1 2
// la label1 3
// la label2
?>

Arata mai mult a Basic decat a PHP dar chiar functioneaza.

Mai sunt si alte noutati, am incercat sa le enumar doar pe cele care mi se pare mie mai interesante.

Din pacate toate aceste lucruri nu vor ajunge sa fie folosite cu adevarat pe scara larga decat poate peste 2-3 ani, sau chiar mai mult. Poate nu este PHP 6 dar eu cred ca toate schimbarile vor fi mai degraba asociate cu PHP 6 decat cu PHP 5, nu cred ca vrea nimeni sa riste o intreaga aplicatie care foloseste namespace-uri sau closures pentru ca nu este versiunea “noua” de PHP 5.

Written by Claudiu Persoiu

10 May 2009 at 5:42 PM

Posted in PHP

Tagged with , , , , ,

E decembrie iar PHP6 inca nu este aici…

without comments

Este decembrie, frigul a venit, vitrinele magazinelor sunt pline de decoratiuni de Craciun iar PHP6 inca nu este aici… poate anul viitor…

Se pare ca versiunea 4 a fost cea mai populara versiune de PHP, PHP5 a avut viteza cea mai mica de penetrare in piata iar PHP6… cea mai asteptata.

Dupa cum sunt schitate lucrurile, PHP6 nu o sa aduca o schimbare atat de mare cum au adus versiuniile precedente, mai degraba o sa aduca schimbari calitative, probleme vechi vor fi rezolvare, REGISTER GLOBALS o sa dispara de tot, la fel si Magic Quotes, care nu este o problema atat de mare de securitate cat de performanta. Vechea si alta data populara gama de functii ereg vor disparea in favoarea preg, aceasta din urma fiind mult mai rapida. Pe de alta parte, cel mai mare avantaj o sa fie suportul pentru Unicode.

Pana atunci exista totusi versiunea de test, iar versiunea finala initial se credea ca o sa fie lansata in 2007, iar acum la finalul lui 2008 este inca in lucru.

Dar intre timp pe 4 decembrie pe site-ul PHP.net, a fost lansata versiunea 5.2.7. Totul bine si frumos, pana pe 7 decembrie cand a fost retrasa pentru ca Magic Quotes nu mai functiona. Sfatul era asteptarea versiunii 5.2.8. A doua zi aceasta a fost lansata, oricum nu cred ca cineva care se grabea sa faca update folosea si Magic Quotes pe on.

Iar acum ma retrag in liniste sa o astept… poate anul viitor…

Written by Claudiu Persoiu

12 December 2008 at 8:26 PM

Posted in PHP

Tagged with , ,

ZCE – un nou episod

with one comment

Dupa ce am sustinut cu ceva timp in urma examenul de certificare ZCE in PHP5, intr-un final a venit si plicul cartonat care il asptetam cu atata nerabdare.

O data cu plicul am descoperit si de ce a durat atat, pe el scria mare Russian Federation, Bucharest. Pe aproape dar nu tocmai bine.

Diploma e foarte draguta (mai ales dupa ce am asteptat-o atat), cu timbru embosat si semnaturile lui Zeev Suraski si Andi Gutmans, fondatorii Zend. In plic mai era si o pagina cu avantajele care le ai ca ZCE si un abtipild maricel cu ZCE PHP5.

Cu acestea fiind spus episodul ZCE PHP5 ia sfarsit… pana la urmatoarea certificare.

Written by Claudiu Persoiu

14 November 2008 at 9:46 PM

Posted in Diverse

Tagged with , ,

Zend framework certification

without comments

De putin timp Zend a lansat programul Zend Framework Certification. In cadrul programului de certificare, utilizatorul are la dispozitie manualul de referinta, ghidul de studiu, training si un voucher pentru examenul de certificare (si sa nu uitam un tricou foarte interesant 🙂 ).

Avantajele certificarii sunt aceleasi ca si la ZCE in PHP5.

Totusi fata de programul de certificare in PHP5, acest program are cateva lucruri diferite, cum ar fi:

PHP5 Zend framework
– este universal valabila pentru toti cei care fac programare in PHP5 – este folositoare doar celor care lucreaza cu… ZF
– este universal – exista si alte frameworkuri
– trecerea la alte versiune nu implica decat cunoasterea diferentelor – trecerea la alt framework greoaie

Trecand peste aceste diferente, atitudinea Zend este una bine venita, pana la urma atrage dupa sine un standard pentru in frameworkuri. Problema este ca nu sunt universal valabile, pana la urma chiar daca nu toti folosim un framework de pe piata, avem tendinta sa ne construim propriul framework.

Invatarea unui astfel de framework are totus avantajul de a oferi o noua perspectiva asupra lucrurilor, ne ajuta sa ne construm o imagine mai clara la ce trebuie sa ne asteptam de la frameworkul folosit. Pe de alta parte, un framework cum este Ruby on Rails a inspirat la randul lui multi programatori in modul cum un framework ar trebui construit, acesta avand echivalente in limbaje cum ar fi Java si evident PHP, fara ca multi dintre ei sa migreze la el. Si ce se intampla daca acum te certifici in el iar apoi te implici in proiecte care folosesc alte frameworkuri?

Pana la urma aceasta este tendinta, asa cum programarea obiectuala a oferit o perspectiva noua pentru refolosire fata de programarea procedurala, asa un framework are tendinta sa aduca programarea orientata obiect la un alt nivel, sporind gradul de refolosire al codului. Dar… doar Zend Framework este solutia?

Written by Claudiu Persoiu

28 September 2008 at 10:51 AM

Posted in Web stuff

Tagged with , ,

Zend PHP5 Certified Engineer

without comments

Si a venit si momentul examenului (a si trecut). Dupa poate ceva mai putin timp decat ar fi trebuit pentru studiu, in ultima zi de concediu am decis sa sustin examenul.

Taxa am platit-o direct la Zend cu un card Visa Electron. Apropo, sa nu faceti aceeasi gresala ca mine, nu incercati sa platiti cu alt card decat cel personal! Am avut aproximativ 5 incercari, doua telefoane in Germania si unul in USA am ajuns sa-mi fac card pentru a cumpara examenul si alte cateva produse! Evident exista si alte metode de plata, dar nu la fel de rapide.

Cand am ajuns la programare, a fost deosebit de simplu, poate prea simplu pentru mine. Totul a mers conform planului, m-am programat si am asteptat ziua examenului.

Ziua examenului. Pentru ca nu aveam nici cea mai mica idee unde se afla centrul ales de mine din cadrul complexului Facultatea de Drept Bucuresti, am decis sa dau un telefon preventiv… nici un raspuns, am mai incercat, era suficient de tarziu cat sa fie cineva acolo si totusi… nici un raspuns.

Am hotarat sa ma duc acolo. Nu mica mi-a fost surpriza cand nimeni nu a auzit de Pearson VUE, iar cand spun asta nu ma refer la femeile de servici care tineau locul de portarului, ci la cei care raspund la telefonul de pe site. Dupa suficiente legaturi din centrala am gasit si centrul (undeva in dreapta) este de fapt un centru CISCO afiliat Person VUE.

Examenul a fost exact asa cum a fost descris pe site, singur in sala, fara obiecte personale, iar acelea care poti sa le iei cu tine in sala de examen nu pot sa le scoti. Examenul este supravegheat cu o camera, care ma facea sa cred ca voi auzi “zzz, zzzz” in timpul examenului de la zoom, dar nu a fost asa.

Examenul, asa cum scrie si in manualul de la Zend, se bazeaza pe experienta cu PHP. Trebuie sa ai cel putin idee de elementele PHP si in special sa ai ochiul format pentru debuging. Cum era de asteptat se analizeaza mai mult elementele atipice de implementare, functii standard PHP si mai putin capacitatea de a scrie cod, dar pana la urma este grila, nuprea aveau cum sa faca altfel. Examenul nu mi s-a parut foarte dificil, dar nici simplu. Se vede clar experienta cu PHP in intrebari, se vede cine s-a “jucat” si cine nu.

La finalul examenului, mi-a aparut “Congratulations you have passed the exam”, sau ceva de genul asta, eram prea fericit ca sa mai memorez.

A doua zi lucratoare am avut si profilul completat pe site, desi puteam sa-l editez la cateva ore de la terminare (de cand am ajuns acasa).

Acum astept diploma care se trimite prin posta, cred ca asta se trimite din Israel deci… o sa fie un cadou frumos de Craciun probabil…

Am uitat sa amintesc de “mock” testele pentru examen. Desi am primit la pachet 10, nu am folosit decat 3, iar cu fiecare test facut scorul a crescut. Din pacate motivul pentru crestere este ca intrebarile se repeta (nu toate dar suficiente) si nici macar nu le-am regasit in examen, forma este asemanatoare, dar diferentele sunt mari in continut. Va sfatuiesc sa nu luati pachete mari pentru ca rezultatele nu o sa mai fie relevante dupa primele teste.

Am citit pe alte bloguri care testul este mai ushor decat examenul. Eu nu am aceeasi parere, gradul de complexitate este de fapt similar, doar intrebarile deosebit de stufoase nu se regasesc in examen, in rest sunt similare.

Written by Claudiu Persoiu

17 September 2008 at 8:36 PM

php|architect’s Zend PHP5 Certification Study Guide – 2nd Edition

with 2 comments

php|architect’s Zend PHP5 Certification Study Guide – 2nd Edition, sau mai exact ghidul recomandata de Zend pentru sustinerea testarii in vederea obtinerii ZCE PHP 5.

O carte subtirica pentru un limbaj peste 1000 de functii (var_dump(get_defined_functions()); – 1297 in versiunea mea), dar exista o explicatie, aceasta carte NU ESTE UN MANUAL! este doar un ghid, manualul il cunoastem deja, se gaseste pe site-ul php.net.

Este o carte foarte interesanta, cel putin a fost pentru mine. Aceasta atinge practic toate subiectele posibile in cadrul examenului de certificare, dar NU le trateaza in detaliu. Daca intentionati sa studiati pentru certificare folosind aceasta carte, trebuie sa aveti manualul aproape, pentru ca nu se gasesc toate explicatiile in carte.

Pe alocuri mai sunt greseli, chiar daca este a doua editie, lucru care mi se pare bizar. Din fericire ele sunt destul de usor de reperat.

Editia a doua mai trateaza doua noi subiecte, respectiv PDO si mysqli. Chiar daca sunt tratate pe scurt, eu am mai gasit lucruri care nu le stiam in aceste capitole (ma indoiesc ca erau critice pentru a trece examenul, dar cred ca sunt utile pentru experienta mea).

Pana la urma este o carte interesanta, si nu de putine ori citind ma gandeam “nu stiam ca se poate face si asa”.

Eu am cumparat-o de la Zend, o data cu certificarea, un set de 10 teste si doua tricouri (php geek fashion 🙂 ), am ales livrarea prin posta, pentru ca era mai putin de jumatate fata de DHL si surpriza, pachetul a venit la doar o saptamana de cand am fost anuntat ca a plecat! Evident pachetul a venit de la un centru apropiat (element 5 Germania), desi initial ma gandeam ca o sa fie livrat din SUA sau Israel si o sa fie un frumos cadou de Craciun.

Written by Claudiu Persoiu

17 September 2008 at 7:21 PM

Posted in Diverse,Web stuff

Tagged with , , ,

O carte pentru PHP 6

without comments

Chiar daca PHP 6 nu este gata inca, sau mai bine zis mai are destul pana va ajunge la varianta finala, deja am gasit o carte dedicata noii versiuni avand titlul PHP 6 and MySQL 5 for Dynamic Web Sites: Visual QuickPro Guide.

Schimbarile care vor avea loc in cadrul PHP 6 sunt deja cunoscute, iar versiunea CVS este disponibila.

Avand in vedere cele de mai sus, se poate crede ca aceasta carte se grabeste sa anunte venirea, pentru ca cititorul sa aiba parte de o abordare a noii versiuni.

Am avut ocazia sa rasfoiesc versiunea in romana a cartii PHP si MySQL pentru site-uri WEB dinamice. Pe spatele cartii sunt bifate nivelurile “Incepator”, “Mediu” si “Avansat”. Cu toate acestea cartea pare mai mult o adaptare a cartii pentru versiunea 4 la versiunea 5, totusi fara a se atinge aproape de loc (sau chiar de loc) aspecte cum ar fi POO, XML, Streams sau abordari prea succinte pentru elemente complexe cum ar fi array-urile. Intradevar cartea nu se pierde in multe detalii iar la final exista prezentate cateva exemple concrete.

Pe Amazon.com se pot rasfoi cateva pagini din carte, din pacate editia precedenta chiar si catii de PHP 5 si se poate vedea ca nu au fost prea multe schimbari in cuprins cel putin, evitand abordari detaliate pentru subiecte care au constituit modificari majore intre versiuni.

Concluzionand eu unul nu ma astept decat la o carte adaptata usor la modificarile care au avut loc de la ultima versiune si nici de cum la o carte orientata spre noua versiune, gata sa evidentieze noile facilitati introduse (sau cele eliminate) in versiunea 6 a PHP. Probabil lansarea timpurie a cartii nu este decat o politica de marketing.

Written by Claudiu Persoiu

14 September 2008 at 6:28 PM

Posted in Diverse,PHP

Tagged with , , , ,