par
Hubert Roksor » 22 avr. 2006, 16:10
Qu'en est-il au niveau de la compatibilité des deux version au moins au niveau de la gestion des objets et des interfaces ?
Aléatoire, au mieux, mais ça dépend de programme en question. Il faut savoir que les objets sont traités différemments sous PHP 5 et PHP 4. Plutôt que de réécrire le manuel, je te laisse consulter ce chapitre:
Nouveau Modèle Objet. La liste des
Incompatilibités avec les versions antérieures est une source importante d'information, de même que l'annexe
Migration de PHP 4 vers PHP 5.
Pour résumer, si tu utilises les nouveaux mots-clé "private", "public", "final", etc... le script ne fonctionnera pas sous PHP 4. De même pour les fonctions magiques "__construct", "__destruct", "__get" et autres. Si tu passes des objets à des fonctions (ou autre) de cette façon, cela ne fonctionnera pas non plus:
$obj = new MaClasse;
$obj2 = new AutreClasse;
$obj2->obj = $obj;
parce qu'une nouvelle instance (une copie) de MaClasse sera assignée à $obj2->obj. Sous PHP 4 il faudrait remplacer la dernière ligne par
$obj2->obj =& $obj;
[quote="metro-gi"]Qu'en est-il au niveau de la compatibilité des deux version au moins au niveau de la gestion des objets et des interfaces ?[/quote]
Aléatoire, au mieux, mais ça dépend de programme en question. Il faut savoir que les objets sont traités différemments sous PHP 5 et PHP 4. Plutôt que de réécrire le manuel, je te laisse consulter ce chapitre: [url=http://fr.php.net/manual/migration5.oop.php]Nouveau Modèle Objet[/url]. La liste des [url=http://fr.php.net/manual/migration5.incompatible.php]Incompatilibités avec les versions antérieures[/url] est une source importante d'information, de même que l'annexe [url=http://fr.php.net/manual/migration5.php]Migration de PHP 4 vers PHP 5[/url].
Pour résumer, si tu utilises les nouveaux mots-clé "private", "public", "final", etc... le script ne fonctionnera pas sous PHP 4. De même pour les fonctions magiques "__construct", "__destruct", "__get" et autres. Si tu passes des objets à des fonctions (ou autre) de cette façon, cela ne fonctionnera pas non plus:
[php]$obj = new MaClasse;
$obj2 = new AutreClasse;
$obj2->obj = $obj;[/php]
parce qu'une nouvelle instance (une copie) de MaClasse sera assignée à $obj2->obj. Sous PHP 4 il faudrait remplacer la dernière ligne par
[php]$obj2->obj =& $obj;[/php]