begin process at 2012 05 31 18:58:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Class et Objet ( POO )

 > 

Utilisation d'une méthode avec pour parametre un objet


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Utilisation d'une méthode avec pour parametre un objet

lundi 27 février 2006 à 11:12:46 | Utilisation d'une méthode avec pour parametre un objet

aguiran

Salut,
Mon pb ressemble un peu à celui posé par Mandark le 11/02, mais je ne souhaite pour ma part, pas ré-instancier un objet dans dans une autre classe, mais à l'extérieur.

Essayons d'être clair (ça va être dur :o)) :

je souhaiterais passer un objet O (insctancié avec la classe C1) en paramètre d'une méthode d'une classe C2 et ainsi utiliser les méthodes et attributs de l'objet O dans cette classe C2.

Je voudrais eviter l'erreur : Call to a member function on a non-object
(Info : j'ai déjà tenté le passage par référence mais ça ne marche pas, enfin si peut-être,  mais il faut alors braver les interdits de la déprécation, et ça j'évite )

En fait je voudrais savoir s'il est possible d'utiliser directement l'objet sans passer obligatoirement par une sérialisation/désérialisation qui entrainera forcément la déclaration d'un nouvel objet. De toute façon cette méthode ne pourrait pas marcher car souhaite que les modifs apportées dans la méthode de la classe C2 soit effectives en sortie sur l'objet O, et non sur une copie.

voilà la structure :
Partie 1
class Classe1{
Var id;
    function Class1($idRef){
    $this->id=$idRef;
    }
}
Partie 2
class Classe2{
    function Class2(){};
    function agir($objetDeTypeClasse1
    {
    echo $objetDeTypeClasse1->id;
    }
}

Partie 3
$Objet1 = new Class1(1);
$Objet2 = new Class2();
$Objet2->agir(Objet1);

Voilà, voilà,
Merci d'avance pour votre aide :o)

lundi 27 février 2006 à 11:25:51 | Re : Utilisation d'une méthode avec pour parametre un objet

J_G

Réponse acceptée !
salut...


Objectif atteint !!! Tu as été assez clair.
Je vais essayé de l'être tout autant...


Il y'a donc 2 problèmes ici :
1. S'assurer que le parametre passée à Classe2::agir() est bien une instance de Classe1
if( !is_object($objetDeTypeClasse1) ) return;
if( get_class($objetDeTypeClasse1) != 'classe1' ) return;
/* ici tu es sûr que $objetDeTypeClasse1 est une instance de Classe1 */

2. Que les modifications apportées dans Classe2::agir() sur le paramêtre $objetDeTypeClasse1 reste...
Deux solutions :
* Passage par référence ! (C'est fait pour...)
* Mais si tu es faché avec les références : retourner la copie de l'objet une fois les modifications fait

if( !is_object($objetDeTypeClasse1) ) return $objetDeTypeClasse1;
if( get_class($objetDeTypeClasse1) != 'classe1' ) return;
/* ici tu es sûr que $objetDeTypeClasse1 est une instance de Classe1 */
/* AGIR sur $objetDeTypeClasse1 */
return $objetDeTypeClasse1;

Et donc :
$Objet1 = new Classe1(1);
$Objet1 = Classe2::agir($Objet1);


Voili... A+
lundi 27 février 2006 à 11:32:52 | Re : Utilisation d'une méthode avec pour parametre un objet

darkduck

Bonjour,

Je ne vois pas où est ton problème.
J'ai exécuté le code suivant et ça fonctionne très bien. ça m'affiche 1 :

<?php

class Classe1{
   
    var $id;
   
    function Classe1($idRef)
    {
        $this->id=$idRef;
    }
}

class Classe2{
   
    function Classe2(){}
    function agir($objetDeTypeClasse1)
    {
        echo $objetDeTypeClasse1->id;
    }
}

$Objet1 = new Classe1(1);
$Objet2 = new Classe2();
$Objet2->agir($Objet1);

?>

Pour info j'utilise PHP 4 et j'ai testé en local avec EasyPhp
lundi 27 février 2006 à 11:37:29 | Re : Utilisation d'une méthode avec pour parametre un objet

aguiran

merci J_G, tu as bien cerné le pb et tu as été 100%, ta méthode passe nickel :o)

Et pour répondre à darkduck, c'est parceque je bosse sur un serveur bien blindé, sans doute configuré par un maniaco-psycopathe fana du INI made by hand from scratch, et y'a beaucoup de choses que je ne peux pas modifier. Et je ne sais pas exactement ce qui me bloque dans la config du serveur.

Enfin voilà,
pb résolu.

Kiss All


Cette discussion est classée dans : function, objet, classe, méthode, c2


Répondre à ce message

Sujets en rapport avec ce message

utiliser un objet d'une classe php dans une page html [ par articmen ] je doit utiliser mon objet de ma classe mais je n'arrive a rien ma page html affiche le code du bodyalors si il ya qqu'un qui peut m'aider merci d'ava probleme de classe en php [ par Elkaire ] Donc voila mon probleme!!dans une premiere page je rensegne les insances de mon objet. Une fois renseigné je peux réutiliser les instances cet objet d Quand on parle de Classe [ par Tomcube ] C'est une question très vaste,On parle de plus en plus de programmation objet. Qui dit programmation objet dit classe. D'ailleurs, c'est fou le nombre objet sqlite [ par jackrichard ] bonjour a tousdésolé si la question est con mais bon la je pige pas sur un livre de php on me dit que php5 propose la classe sqlite_db mais kan j'essa Problème de variables [ par WaNoU ThE EpSyLoN ] Bonjours à tous et à toutes,Comment faire pour qu'une variable définie dans une méthode d'une classe soit utilisable dans une autre méthode de cette m A quand la surdéfinition de méthode d'une classe PHP 5 [ par Nifhell ] Bonjou à tous,Je souhaiterais savoir s'il est possible comme en C++ de surdéfinir le constructeur d'une classe en PHP?D'apés mes essais de code, appar Refonte de mon site en objet AIDE conception [ par vega11 ] Bonjour à tous, je suis actuellement en BTS informatique 2ème année et je m'amuse à créer pour une de mes activités un site de rencontre.Je suis très inclusion d'une classe provenant d'un autre fichier [ par lilippx ] salut, je me suis mis au php ce matin mais je bute sur un petit truc (dès le premier jour, ce n'est pas motivant...)je n'arrive pas à instancier un ob Boutique en ligne [ par Foxhive ] Bonjour à tous,Je voudrais creer une boutique en ligne et j'ai regardé cette classe : http://www.phpcs.com/codes/CLASSE-PHP5-PANIER-TOUTE-SIMPLE_34003 Utilité des :: et classes "imbriquées" [ par codefalse ] Bonjour à vous tous.Hier soir j'ai un peu tripoté les "::" en php pour savoir à quoi ils servent.J'en ai conclut, d'après mes tentatives, que cela ser


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales