Page 1 sur 1

php 5.4 est sorti!

Posté : 02 mars 2012, 04:38
par Nagol
Et compilé

# php -v
PHP 5.4.0--pl0-gentoo (cli) (built: Mar 2 2012 00:23:11)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

premières impression?
phpPgAdmin est cassé, c'est moche

Re: php 5.4 est sorti!

Posté : 02 mars 2012, 08:02
par katagoto
En même temps phpPgAdmin caylemal.

Re: php 5.4 est sorti!

Posté : 02 mars 2012, 12:08
par moogli
han et on m'a pas prévenu :'(

je vais pouvoir passer de la RC8 à l'officielle la classe :d

En fait y a plein d'appli de cassée, celle qui utilise les tests sur les magic_quotes, les shorts tag et tout :)

un bon exemple c'est de changer la version de php de xampp pour passer sur une 5.4 tu fou en l'air la partie web (short tag a gogo et consort :) )

plus qu'a attendre la version php5.4 de xebug :langue:

@+

Re: php 5.4 est sorti!

Posté : 02 mars 2012, 12:31
par stealth35
petit récapitulatif des points les plus sympas

- Les Traits
- Syntaxe courte pour les array ($a = [1, 2, 3]
- Dereferencing pour les Object (new Test()->hello())
- Syntaxe des nombre binaire ($b = 0b0010110)
- Nouveau type Callable
- Ajout de l'interface JsonSeralisable (utilisable avec json_en/decode)
- Ajoute de l'option PRETTY_PRINT pour le json
- Un serveur web intégré
- Fin des magic quote
- E_ALL inclue E_STRICT
- Possibilité de mettre une classe pour le session handler
- Ajout de la fonction hex2bin
- Ajout du Spoofchecker et du Transliterator pour Intl
- Ajout de l'upload progress via les session
- Ajout de CallbackFilterIterator et RecursiveCallbackFilterIterator pour la lib SPL

Re: php 5.4 est sorti!

Posté : 02 mars 2012, 12:57
par Nagol
petit récapitulatif des points les plus sympas

- Les Traits <- ok même si je trouve pas ça utile
- Syntaxe courte pour les array ($a = [1, 2, 3] <- berk du javascript
- Dereferencing pour les Object (new Test()->hello()) <- on gagne une ligne, on y perdra en lisibilité
- Syntaxe des nombre binaire ($b = 0b0010110) <-mwé
- Nouveau type Callable <- ça faut que je regarde ce que c'est
- Ajout de l'interface JsonSeralisable (utilisable avec json_en/decode) <- berk le json, le serialize/unserialize est tellement plus élégant, mais comme d'hab l'industrie se tourne vers des solutions nazes
- Ajoute de l'option PRETTY_PRINT pour le json <- voire plus haut
- Un serveur web intégré <- ah bah ça c'est super utile! mais utile à quoi?
- Fin des magic quote <- il était temps
- E_ALL inclue E_STRICT <- pareil mais alors la y'en a qui vont avoir mal au fion
- Possibilité de mettre une classe pour le session handler <-sert à rien
- Ajout de la fonction hex2bin <-on l'avait pas déja?
- Ajout du Spoofchecker et du Transliterator pour Intl
- Ajout de l'upload progress via les session <- mwé
- Ajout de CallbackFilterIterator et RecursiveCallbackFilterIterator pour la lib SPL

Re: php 5.4 est sorti!

Posté : 02 mars 2012, 14:55
par stealth35
Oui dans le fond c'est vrai que c'est pas très pertinent, je vais essaye de montrer des cas concret ou des problème que j'ai connu

- Les Traits

Pour l’héritage horizontale, on peut parfois être vouloir mettre une même méthode dans plusieurs classe, mais qui non peu être rien avoir entre elle donc l’héritage classique ne si applique pas.

- Syntaxe courte pour les array ($a = [1, 2, 3]

Je suis pas fan non plus mais pourquoi pas

- Dereferencing pour les Object (new Test()->hello())

Pareil, on va dire que c 'est 2 choses la son dans la tendance d’écriture du code actuelle

Exemple avec les Finders du S2
// avant
$finder = new Finder();
$finder->files()
       ->size('>= 1K')
       ->size('<= 2K')
;
//apres
$finder = (new Finder())
        ->files()
        ->size('>= 1K')
        ->size('<= 2K')
;
- Syntaxe des nombre binaire ($b = 0b0010110)

Ça sert surtout pour l'écriture de fichier avec des format bien précis

- Nouveau type Callable

Callable devient un type, pratique pour passer en argument une fonction de rappelle, donc plus besoin de faire un is_callable pour vérifié , on le met direct dans le typeint, ensuite pas besoin de call_user_func

- Ajout de l'interface JsonSeralisable (utilisable avec json_en/decode)

je trouve ça très pratique moi au contraire, c'est pas pour une utilisation PHP<>PHP, mais PHP<> Autre language,
et contrairement à ce que j'ai dis plus haut c'est uniquement de l'encodage

Exemple t'as un classe User, et faut renvoyer ça en Json tu feras direct
class User implements \JsonSerializable
{
    private $username;

    public function getUsername()
    {
        return $this->username;
    }

    public function setUsername($username)
    {
        $this->username = $username;
    }

    public function jsonSerialize()
    {
        return array(
            'username' => $this->username
        );
    }
}

$user = new User();
$user->setUsername('me');

echo json_encode($user);

//{"username":"me"}
- Ajoute de l'option PRETTY_PRINT pour le json

En plus facile pour la lecture

- Un serveur web intégré

On est tous habituer à avoir son serveur web, ça peut être contraignent pour le dev, par exemple mois j'ai tout mes appli dans un dossier hors apache (parce que c'est en git, svn et que je veux pas mélange), je suis obligé de faire des vhost pour les tester, je vais donc pourvoir les testes direct sans changé de conf, un peu comme avec Ruby On Rails, ou tu lances rails server

- Fin des magic quote
Bien aussi, les fonctions existent toujours mais ne fond plus rien et renvoie false

- E_ALL inclue E_STRICT
Même avis que toi

- Possibilité de mettre une classe pour le session handler

Super pratique ça
//avant
session_set_save_handler(
    array('MySession', 'open'),
    array('MySession', 'close'),
    array('MySession', 'read'),
    array('MySession', 'write'),
    array('MySession', 'destroy'),
    array('MySession', 'gc')
);
//apres
$handler = new MySession();
session_set_save_handler($handler);
- Ajout de la fonction hex2bin
Non c’était bin2hex, faillais passer par pack avant

- Ajout du Spoofchecker et du Transliterator pour Intl
le Spoofchecker c'est pour testé des caractères suspects par rapport a une langue
$spoof = new Spoofchecker();
$spoof->setAllowedLocales('fr');

var_dump($spoof->isSuspicious('bonjour'));
var_dump($spoof->isSuspicious('Кірыліца'));

/*
bool(false)
bool(true)
*/
Le Transliterator fait des merveilles au niveau des textes, finis les problème d’accent et de langue
var_dump(Transliterator::create('any-latin')->transliterate('ナルト'));
var_dump(Transliterator::create('NFD; [:Nonspacing Mark:] Remove; NFC')->transliterate('déjà'));

/*
string(6) "naruto"
string(4) "deja"
*/
- Ajout de l'upload progress via les session
j'avoue que c'est un peu tard, les navigateur commence déjà a le faire


- Ajout de CallbackFilterIterator et RecursiveCallbackFilterIterator pour la lib SPL
Plus besoin de créer une classe de filtre

Re: php 5.4 est sorti!

Posté : 02 mars 2012, 22:24
par Nagol
par rapport au json ce que j'aime pas c'est que le json ne garanti pas qu'une structure complexe encodée puis décodée soit à l'identique, c'est du au fait qu'en javascript un array ne peut être indexé avec des clefs textuelles, dans ce cas la c'est un objet. Et mine de rien ce truc la est une plaie complete j'ai du me faire des fonctions de chaque côté pour réparer les cassage dus au json (truc récurisf à la con mais ça me gonfle d'avoir à le faire) si tu compares avec serialize qui est facilement implémentable dans un autre langage (phpjs pour une version javascript) et qui lui garantit qu'un truc complexe sera encodé/décodé à l'identique puisqu'il contient explicitement les types de chaque variable ou valeur.

sinon pour le reste on est d'accord dans l'ensemble, mais je ne suis pas un grand fan du repompage de java que devient notre php, je l'aimais bien littéral avec la possibilité de faire de l'objet et je sent que bientôt on n'aura plus ce choix, du coup les SPL ou les trucs comme trait dans l'absolu c'est des bonnes modifs mais ca participe de cette vision d'ensemble que j'aime pas.

Re: php 5.4 est sorti!

Posté : 03 mars 2012, 15:55
par moogli
En fait y a plein d'appli de cassée
donc SQLITE manager, problème avec des accès statique de méthode nom déclarée statique et l'insertion dans une table qui ne fonctionne plus :mrgreen:

Je sens que l'on va avoir des soucis quand les hébergeurs vont y passer (dans 2 - 3 ans ? :mrgreen: )

@+

Re: php 5.4 est sorti!

Posté : 15 juin 2012, 10:36
par Nagol
PHP 5.4.4--pl0-gentoo (cli) (built: Jun 15 2012 10:28:40)

Re: php 5.4 est sorti!

Posté : 15 juin 2012, 11:10
par moogli
dev
root@debianServ:/home/moogli# php -v
PHP 5.4.5-dev (cli) (built: May 31 2012 09:26:33)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
with Xdebug v2.2.0, Copyright (c) 2002-2012, by Derick Rethans

ou

F:\Users\Moogli>php -v
PHP 5.4.4 (cli) (built: Jun 13 2012 21:27:06)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
with Xdebug v2.2.0, Copyright (c) 2002-2012, by Derick Rethans


en ligne (1&1)

PHP 5.4.3 (cgi-fcgi) (built: May 9 2012 07:47:17)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

Un peu à la bourre le paquet debian ^^