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