Connexion

Radio Communautaire

Ecoutez Epsilon Friends Radio
Winamp windows Media Player Real Player QuickTime

Lecteur web radio

Pour écouter la radio en ligne installez Flash Player. Visitez Draftlight Networks pour plus d'informations.


Les derniers titres

Chargement...

Nos téléchargements

Newsletter

Assigning the return value of new...

Note utilisateur:  / 0
MauvaisTrès bien 
Affichages : 101

Le message Assigning the return value of new by reference is deprecated in... apparaît fréquemment dès lors que l'on surveille les logs d'erreur d'un site web avec PHP.

Raisons du message

Ce message est le plus fréquemment rencontré lorsqu'on transfère un site créé sous PHP4 vers PHP5, que ce soit localement ou si l'hébergement met à jour sa version de PHP.

Pour en comprendre la raison, l'historique de PHP est indispensable.

PHP version 4 a apporté un support embryonnaire de la programmation objet (POO). Mais cette version conservaitde nombreuses lacunes, en particulier dans la gestion des objets, qui n'étaient vus, au mieux, que comme des tableaux améliorés.

Sous PHP4, lorsqu'on désirait retourner une référence (c'est à dire uniquement un myen d'accéder directement à un objet créé), il était indispensable d'utiliser l'opérateur & soit dans l'assignation de l'objet, soit dans la fonction retournant un objet, sans cet artifice, on avait une copie de l'objet, ce qui n'était jamais le but voulu.

 

// exemple de création de référence à un objet
$obj =& new StdClass ; 
// Exemple de renvoi de référence depuis une fonction 
function maFonction() 
{
    return & new StdClass ;
} 
// Exemple de fonction forçant un retour par référence
function &maFonction() 
{
    return new StdClass ;
}

Ici nous voyons bien le flou artistique régnant dans la méthodologie et les bricolages nécessaire spour obtenir des références aux objets.

Solution PHP 5

Avec PHP 5, la programmation objet a fortement évolué sous PHP, avec en particulier une véritable mise en oeuvre complète des concepts objets tels qu'on les trouve dans des lanages tels C++, SmallTalk ou Java.

Avec cette nouvelle conceptualisation et mise en oeuvre des objets, l'ensemble des bricolages plus ou moins fiables utilisés en PHP 4 sont devenus au mieux obsolètes, au pire de mauvaises méthodes. En PHP 5, toute création d'objet est automatiquement une référnce, le seul moyen pour dupliquer (copier) un objet est l'utilisation de la méthode clone().

La syntaxe correcte PHP 5 devient donc:

// exemple de création de référence à un objet
// Un objet est maintenant TOUJOURS une référence
$obj = new StdClass ; 
// Exemple de renvoi de référence depuis une fonction 
function maFonction() 
{
    return new StdClass ;
} 
// Exemple de fonction forçant un retour par référence
// Ne JAMAIS utiliser, lèvera une exception Deprecated
function &maFonction() 
{
    return new StdClass ;
}

En ce sens, PHP 5 rend les choses plus claires.

Vous n'avez pas les droits suffisants pour poster un commentaire.

Vous êtes ici:   AccueilDocumentationsPHP 5Deprecated - ObsolèteAssigning the return value of new...

Nos membres


Avatar

Rafidi


Inscription: 2012-05-15
Dernière visite: 2012-05-16
Voir le profil
Avatar

BZH56 Warrior


Inscription: 2012-04-30
Dernière visite: 2012-05-01
Voir le profil
Avatar

rguilan


Inscription: 2012-04-24
Dernière visite: 2012-05-16
Voir le profil
Joomla! is Free Software released under the GNU/GPL License.