Différences entre php4 et php5

13 01 2011

Il existe un certain nombre de différences entre les versions 4, 5.2 et 5.3 de PHP qu’il peut être utile de connaître.

HTTP_VARS

En php 4, on pouvait accéder aux variables superglobales GET, POST et COOKIE (GPC) de 2 manières différentes :

Ancienne syntaxe Nouvelle syntaxe
GET HTTP_GET_VARS $_GET
POST HTTP_POST_VARS $_POST
COOKIE HTTP_COOKIE_VARS $_COOKIE

L’ancienne syntaxe n’éxiste plus à partir de php 5.0, elle a été supprimée.

Modèle objet

Autre différence notable, au niveau de la programmation orientée objet (POO).

Portée

En php 4, la notion de portée des membres d’une classe (attributs & méthodes) n’existait pas. Ainsi, tous les membres d’une classe étaient publiques (accessibles sans aucune restriction), et on déclarait les attributs avec var :

class Test{
	var Nom;
	var Prenom;
}

En PHP 5, ont peut définir une portée aux membres, avec les instructions public, private, protected ou encore final, static, what the fuck

Constructeur et destructeur

Enfin, la syntaxe des constructeurs et destructeurs en php 4 et php 5 est différente.

En PHP 4 on utilisait le nom de la classe pour déclarer le constructeur. Il n’y avait pas de destructeur en natif, il fallait recourir à la fonction register_shutdown_function(), bref, une belle merde !

Mais avec PHP 5 ton cauchemar est terminé, le constructeur s’appelle maintenant __construct, et le destructeur __destruct.

PHP 5 supporte les deux syntaxes pour le constructeur (nom de la classe et __construct) jusqu’à la version 5.2.x incluse. Au-delà (PHP 5.3), seule __construct fonctionne.

Si vous utilisez PHP 5.2, qui est compatible avec les deux syntaxes, et que vous déclarer un constructeur pour chaque syntaxe, la nouvelle syntaxe __construct sera exécutée en priorité si elle éxiste, sinon l’ancienne sera appellée. Mais en aucun cas le constructeur ne sera appelé 2 fois, ce qui serait une aberration aberrante

Du coup, voila un petit exemple pour faire des classes à la fois compatibles PHP 4, PHP 5.2 et PHP 5.3, idéal pour pas se prendre la tête avec la rétro compatibilité :

class Exemple{

	function Exemple(){
		echo "<div>[Mode compatibilité PHP4, appel constructeur PHP5]</div>";
		$this->__construct();
	}

	function __construct(){
		echo "<div>Je suis l'Architecte, certaines de mes réponses te seront accessibles mais pas toutes.</div>";
	}

}

$exemple = new Exemple();

La classe hein ?

Quelques fonctions en moins

PHP5 propose quelques fonctions en moins par rapport à PHP4. Ces fonction sont qualifiés d’obsolètes.

Il faut noter par exemple la suppression de ereg() et eregi() qui permettaient d’utiliser les expressions POSIX. Maintenant on est obligé de passer par preg_xxx() qui utilisent les expressions PCRE (Perl).


Partager :

Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Digg
  • del.icio.us
  • Facebook
  • Digg -fr
  • Live
  • MisterWong Fr
  • Scoopeo
  • StumbleUpon
  • Technorati
  • Wikio FR

Actions

Informations

Et maintenant je fais quoi ?

Aucun commentaire

Une réponse à “Différences entre php4 et php5”

20 04 2011
saillantist (12:00:32) :

Article simple et concis
merci

Laisser un commentaire

Vous pouvez utiliser ces balises html : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>