RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Acces au méthode entre objet

Forum : PHP - BDD
Sous Catégorie : BDD
Type du sujet : Sujet Normale
FAQ : FAQ PHP - BDD

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGES : [1] [2]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM PHP - BDD

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
ReaM
Superviseur :
- Java
Avatar de ReaM
Inscrit : 24/02/2005
Messages : 744
Message
#102260
Posté le 24/06/06 à 18:17
yop yop ^^

J\'ai un petit soucis de syntaxe pour accéder à une méthode d\'un objet instancier dans ma classe actuelle.

Je m\'explique

J\'ai une classe a avec plusieurs variables d\'instances dont une est une instance de ma classe b .
Je voudrais dans une fonction de ma classeA accéder à une méthode de ma classeB , mais je ne sais pas quel opérateur je dois utiliser :/ . Le chainage de -> ca n\'a pas l\'air de passer .


<?php class classeA { private $var1=null; private $var2 = null; public function __construct() { $this->var1 = 5; $this->var2 = news classeB($this->var1); } public function methode() { $this->var2 //et la j\'aimerais accéder à la methode bidon de la classeB } } class classeB { public function __construct(){ } public function methodeBidon() { echo \'bidon\'; } } ?>

__________________________
Image
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne et personne ne sait pourquoi...

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

ReaM
Superviseur :
- Java
Avatar de ReaM
Inscrit : 24/02/2005
Messages : 744
Message
#102261
Posté le 24/06/06 à 18:23
Vous ne disposez pas des droits suffisant pour éditer ce sujet du forum

Je voulais editer mon message pour enlever le paramètre que j'envois au constructeur de la classeB pour me corriger Smiley
__________________________
Image
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne et personne ne sait pourquoi...

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Spirit
Superviseur :
- C & C++
Modérateur :
- PHP
- Javascript
- MySQL
Avatar de Spirit
Inscrit : 07/04/2004
Messages : 1966
Message
#102274
Posté le 24/06/06 à 22:35
et un
$this->var2->fonctionB();
?

sinon, je sais pas si en php ça passe, mais tu déclares ta classe B après ta A alors que tu l'utilises dans A.

tu as écris news classeB, un s en tropSmiley
__________________________
Spirit - modérateur casu ^-^'

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

ReaM
Superviseur :
- Java
Avatar de ReaM
Inscrit : 24/02/2005
Messages : 744
Message
#102288
Posté le 25/06/06 à 11:51
$this->objetA->methodeB() , ca ne me fait rien du tout :/, je l'ai déjà cité au dessus , le chainage de -> ne s'interprète pas .

En fait j'aimerais avoir comme variable d'instance mon objetB pour éviter de devoir le créer pour chaque méthode de ma classeA qui en ont l'utilitée.

Le programmeur étant fainéant ( si si xD ) , écrire pour chaque methode un new de cet objet alors qu'avec une seule fois ca suffirait .
__________________________
Image
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne et personne ne sait pourquoi...

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

lain82
Membre du club
Avatar de lain82
Inscrit : 25/04/2004
Messages : 1177
Message
#104178
Posté le 02/07/06 à 23:51
attention, si je comprend bien, l'instance B et la méthode qui appelle une méthode de la classe B sont tous les deux dans une classe A.

Imaginons, tu as une classe B avec une méthode BlablaB() dedans.
Un autre classe A ou tu as une variable de type classe B ( variableB ) et une méthode qui doit acceder à la méthode de la classe B ( AccesToMethodeB() ).
Ca donne :


// Méthode de la classe A function AccesToMethodeB() { $this->variableB->BlablaB(); }


Dans ton code :
ReaM dit :
$this->objetA->methodeB()

Tu sembles essaye, à partir de la classe A, d'acceder à la classe A.... Bizarre.
__________________________
A tous les membres, dite non à la (drogue...) sms-mania !

Avant de poster, vérifiez si la réponse n'est pas dans la FAQ ou un tutorial.

Je suis actuellement Image sur MSN

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

ReaM
Superviseur :
- Java
Avatar de ReaM
Inscrit : 24/02/2005
Messages : 744
Message
#104180
Posté le 03/07/06 à 00:01
Non , on ne se comprend pas la xD ^^ .

Bon ici j'ai pas accès à mes sources , dès que je reviens @home ( vacances xD ) , je posterai mes classes et mon application ;)
__________________________
Image
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne et personne ne sait pourquoi...

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

zeb
Membre du club
Avatar de zeb
Inscrit : 16/02/2004
Messages : 1857
Message
#104183
Posté le 03/07/06 à 00:04
tu ne peux en POO acceder a une methode d'une autre classe que si celle ci a été instancié préalablement.

donc dans ta classe A :

$monobjet B = new objetB();
$monobjetB->methodeB();
__________________________
Château de Chatel / Moselle, Château de Moyen, Château de rochefort..
LAMP Compagnie Stanislas, Forum XIXème, Radio, Sculpture et pierre.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

ReaM
Superviseur :
- Java
Avatar de ReaM
Inscrit : 24/02/2005
Messages : 744
Message
#104184
Posté le 03/07/06 à 00:13
Bon j'ai une vieille version de mon brole ^^ sur mon portable .


<?php class News { private $nbrNews = null; private $table = null; private $connection = null; public function __construct() { $this->nbrNews = 5; $this->table = 'tbl_news'; } public function DisplayNews() { $connection = new Connection($this->table); $tempSql = $connection->microtime_float(); $newsTemplate = new Template("./"); $result = $connection->execQuerySelect(array('*'),' '); $nbrNews = mysql_num_rows($result); if ($nbrNews < $this->nbrNews) $page=1; else $page= round($nbrNews/$this->nbrNews); $newsTemplate->set_filenames( array('body' => './templates/news.tpl')); while( $row = mysql_fetch_array($result) ) { $newsTemplate->assign_block_vars('news', array( 'TOPIC' => $row['news_topic'], 'CONTENU' => $row['news_contenu'], 'DATE' => $row['news_date'], 'TIME' => $row['news_time'], 'USER' => $row['news_user'] )); } // Affichage des données $newsTemplate->pparse('body'); for ($i =1 ; $i <=$page ; $i++) echo $i.' '; echo 'Temps d\'execution :'.($tempSql - $connection->microtime_float()); unset($connection); } public function AdminNews() { $connection = new Connection($this->table); $tempSql = $connection->microtime_float(); $result = $connection->execQuerySelect(array('*'),'where news_id=\'1\''); $newsTemplate = new Template("./"); $newsTemplate->set_filenames( array('body' => './templates/adminnews.tpl')); while( $row = mysql_fetch_array($result) ) { $newsTemplate->assign_vars( array( 'TOPIC' => $row['news_topic'] )); } $newsTemplate->pparse('body'); echo 'Temps d\'execution :'.($tempSql - $connection->microtime_float()); unset($connection); } public function AddNews($topic,$contenu,$user,$categ) { $connection = new Connection($this->table); $arrayData=array('NULL','NOW()','NOW()',$topic,$contenu,$user,$categ); if ($connection->execQueryAdd($arrayData))return true; else return false; } public function __destruct(){} } ?>



Au lieu de créer mon objet connection à l'intérieur de ma méthode , je voulais la faire lors de l'appel de mon constructeur . ( Pq écrire pour toute mes méthodes $connection = new Connection($this->table); alors qu'une fois suffirait ) .

Le problème est que si je le fais dans mon constructeur , dans ma méthode DisplayNews() , j'ai bien accès à mon objet connection ( $this->connection ) , mais pas au méthode de cet objet la ($this->connection->checkTable() par exemple , si c'est bien de cette manière la qu'il faut faire ).

Voila j'espère que cette fois ci nous sommes sur la même longueur d'onde ;)
__________________________
Image
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne et personne ne sait pourquoi...

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Spirit
Superviseur :
- C & C++
Modérateur :
- PHP
- Javascript
- MySQL
Avatar de Spirit
Inscrit : 07/04/2004
Messages : 1966
Message
#104190
Posté le 03/07/06 à 00:24
que donnerait un $this->connexion::methode() ?
en tous cas je trouve ça improbable qu'il n'y ait pas une méthode pour réaliser cette actionSmiley
__________________________
Spirit - modérateur casu ^-^'

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

lain82
Membre du club
Avatar de lain82
Inscrit : 25/04/2004
Messages : 1177
Message
#104195
Posté le 03/07/06 à 00:32
Ben, la solution qu'utilise de nombreux sites sur lesquels j'ai jeté un oeil ( MP en autre ) ... Tu crée une instance de connection sur le script principal de ton site et tu le passe par référence à ton objet lors du constructeur.

Sinon, ton idée est faisable. Par contre, quand tu crées l'instance, il ne faut pas que tu écrives $connection = new connection( blabla ); mais $this->connection = new connection( bla bla );

voila tout ce que je peux dire
__________________________
A tous les membres, dite non à la (drogue...) sms-mania !

Avant de poster, vérifiez si la réponse n'est pas dans la FAQ ou un tutorial.

Je suis actuellement Image sur MSN

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM PHP - BDD



    PAGES : [1] [2]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.