Accéder a une methode depuis la methode d'une autre classe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Accéder a une methode depuis la methode d'une autre classe

par jeff » 30 déc. 2005, 19:54

t'est pas obliger de l'instancier plusieur fois, regarde du cote de masque singletonhttp://fr.php.net/manual/fr/language.oop5.patterns.php

par Ultiny » 30 déc. 2005, 19:50

J'aime bien ta première solution, en plus elle fonctionne :)

Je ne souhaitais pas instencier plusieurs fois la même classe.
Dans la première solution c'est correcte, je vais la prendre.

Merci pour votre aide, je mets en "Réglé"

par jeff » 30 déc. 2005, 19:39

il y aurai peut etre une autre methode
tu creer une instance de ta classe 1 dans ta classe 2
avec __call
tu appel les methode de ta classe1 a travers ta classe 2 avec call_user_func_array

par jeff » 30 déc. 2005, 19:25

tu peut creer un objet de la classe 1 que tu passe en paramtere a la classe 2 pour en faire un attribut
$c1=new classe1();
$c2=new classe2($c1);

//et la classe2
class classe2
{
private $var;
public function __construct(classe1 $class)
{
$this->var=$class;
}

public function methode2()
{
$this->var->methode1();
}}
finalement j'ai dit la meme chose que cyrano :wink:

par Ultiny » 30 déc. 2005, 18:33

Si la méthode est déclarée en statique tu peux l'utiliser en méthode de classe.
class1::methode();
J'ai essayé ceci mais (sans doute pour me faire c... :P ) ma methode de la classe 1 (celle qui est appelée) appelle elle même une autre methode (cette fois ci de sa classe) donc j'ai une erreur qui me montre que la methode 2 est bien executé mais la methode qu'elle appel n'est pas trouvée, logique puisque elle reste dans la classe 1

par Ultiny » 30 déc. 2005, 18:30

Elle sont déja inclues toutes les deux dans mon index et y sont instanciées.

J'ai vu que global fonctionnait aussi pour la methode qui appel l'autre, mais dans ce cas je serais obligé de le faire a chaque methode ce qui est pénible.

Il n'y a pas un moyen de rendre quelque chose global à une classe entière?

Dernièrre possibilitée à laquelle j'ai pensé: utiliser extends mais rendre privé toutes les méthodes dont je ne souhaite pas avoir accés depuis la classe fille.

par solo » 30 déc. 2005, 18:28

Si la méthode est déclarée en statique tu peux l'utiliser en méthode de classe.
class1::methode();

par Cyrano » 30 déc. 2005, 18:18

fais un incluide de la classe 1 et crée une instance de classe. Sans utiliser extends, je ne vois pas vraiment d'autre méthode.

Accéder a une methode depuis la methode d'une autre classe

par Ultiny » 30 déc. 2005, 18:15

Bonsoir,

Je cherche depuis quelques dixaines de minutes à faire ceci:

class 1 {
methode 1
}

class 2 {
methode 2 appel la methode 1
}

instancie les deux classes.

Je voudrais pouvoir donc accéder à la premiere dans la deuxieme SANS utiliser extends car il y a bon nombre d'autres methodes dans la classe 1 qui seront inutiles dans la classe 2.

Merci de votre aide.

[Edit]Je souhaiterais en résumé rendre global toute ma classe 1 instanciée à ma classe 2[/Edit]