IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

utiliser une classe dans une autre [PHP 5.6]


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut utiliser une classe dans une autre
    Bonjour,

    J'utilise PHP en CLI et je débute la POO.

    J'ai créé plusieurs class :
    BDD pour gérer les requêtes sql,
    Stream pour gérer l'affichage en CLI,
    Machine pour gérer des scripts à envoyer sur diverses IP.

    Dans ma classe machine, je voudrais me servir de Stream et de BDD..

    J'ai essayé plusieurs méthodes mais je n'y arrive pas

    script principal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    include ("BDD.php");
    include ("Stream.php");
    include ("Machine.php");
     
    $bdd = new BDD();
    $stream = new Stream();
    $machine = new Machine();
     
    $machine->get_connected();
     
    ?>
    script machine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    class Machine
    {
    	function get_connected()
    	{
    		$context = stream_context_create(array('http'=>array('timeout' => 2.0)));
     
    		$shell = shell_exec("arp -a");
    		// traitement du flux pour récupérer les IP dans un tableau
    		foreach( $ip as $value )
    		{
    			echo $value;
    			$url = 'http://'.$value;
    			$handle = fopen($url, 'r', false, $context);
    			if( $handle )
    			{
    				//ici appel de stream
    				echo stream::format(" OK", "green");
    				f_close($handle);
    			}
    			else
    			{
    				//ici appel de stream
    				echo stream::format(" Timeout", "red");			
    			}
    		}
    	}
    }
    Je voudrais créer l'objet Stream en 'global' dans la classe Machine, mais je n'y arrive pas.
    Idem pour la classe BDD

    Est-ce possible ? Si oui comment ?

    Idem pour la resource contexte, j'aimerais la créer dans le __construct() et l'utiliser par la suite dans toutes les fonctions de ma classe mais je n'y arrive pas

    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Instancie ton objet Stream dans ta classe Machine et non à l'extérieur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Par défaut
    Tu peux également passer tes ressources en paramètres du constructeur de la classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $stream = new Stream();
    // Réaliser les actions nécessaires sur stream
    $bdd = new Bdd();
    // Réaliser les actions nécessaires sur bdd
     
    $machine = new Machine($stream, $bdd);
     
    // Dans ce cas, dans la classe Machine définir le constructeur:
    class Machine {
     
        protected $stream;
        protected $bbd;
     
        public function __construct(Stream $stream, Bdd $bdd) {
            $this->stream = $stream;
            $this->bdd = $bdd;
        }
    }
    Ou alors créer des setters à appeler une fois Machine instancié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $stream = new Stream();
    // Réaliser les actions nécessaires sur stream
    $bdd = new Bdd();
    // Réaliser les actions nécessaires sur bdd
     
    $machine = new Machine();
    $machine->setStream($stream);
    $machine->setBdd($bdd);
     
    // Dans ce cas, dans la classe Machine définir les méthodes correspondantes:
    class Machine {
     
        protected $stream;
        protected $bbd;
     
        public function setStream(Stream $stream) {
            $this->stream = $stream;
        }
     
        public function setBdd(Bdd $bdd) {
            $this->bdd = $bdd;
        }
    }

  4. #4
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut
    Merci Pahcixam, j'aime bien ton option 2 avec les setteurs

    A moi de jouer maintenant
    A++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/04/2011, 11h32
  2. utilisation d'une variable d'une class dans une autre class
    Par the watcher dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2010, 15h01
  3. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 10h43
  4. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 27/08/2007, 00h04
  5. utiliser les attribut d'une classe dans une autre classe
    Par kaissaoui dans le forum Langage
    Réponses: 11
    Dernier message: 18/07/2007, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo